In [ ]:
import tensorflow as tf
import pandas as pd
import numpy as np
import keras
import sklearn
import itertools
import matplotlib.pyplot as plt
In [ ]:
X_train = pd.read_csv("X_train.csv")
X_test = pd.read_csv("X_test.csv")
y_train = pd.read_csv("y_train.csv")
y_test = pd.read_csv("y_test.csv")
y_multi_train = pd.read_csv("y_multi_train.csv")
y_multi_test = pd.read_csv("y_multi_test.csv")
In [ ]:
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.fit_transform(X_test)
In [ ]:
#dictionaries for final plots
res_log=dict()
res_rf_b=dict()
res_xgb_b=dict()
res_nn_b=dict()
res_tree=dict()
res_rf_m=dict()
res_xgb_m=dict()
res_nn_m=dict()

Noise range 0.5

In [ ]:
def modify_dataset(dataset, variables_to_poison, noise_factor):
    poisoned_dataset = dataset.copy()
    num_samples, num_variables = poisoned_dataset.shape
    for var_index in variables_to_poison:
        noise = np.random.normal(scale=noise_factor, size=num_samples)
        poisoned_dataset[:, var_index] += noise
    return poisoned_dataset

variables_to_poison = [2, 6, 8, 9, 11, 31, 33, 34, 39, 40]
noise1 = 1
X_train_mod1 = modify_dataset(X_train, variables_to_poison, noise1)

X_train_mod1
Out[ ]:
array([[ 1.79214449, -0.2082886 , -0.05701697, ..., -0.47506312,
        -0.73447607, -0.12070382],
       [-0.57638416,  1.78686151,  1.3891409 , ..., -1.07749554,
        -1.73937336, -0.12070382],
       [-1.0569863 , -0.20828827,  0.02590353, ...,  3.2904489 ,
         3.30201687, -0.12070382],
       ...,
       [-0.47187522, -0.06694436,  2.39135366, ..., -0.15729827,
        -1.36659372, -0.12070382],
       [-0.1666061 , -0.18783648, -1.04653667, ...,  1.07142868,
         2.04014546, -0.12070382],
       [-0.6757627 , -0.20011705, -0.68488861, ..., -0.72946225,
        -0.92926595, -0.12070382]])
In [ ]:
from sklearn.linear_model import LogisticRegression
from sklearn import metrics
from sklearn.metrics import (confusion_matrix, accuracy_score, precision_score, recall_score, f1_score)
lr1=LogisticRegression()
lr1.fit(X_train_mod1, y_train)
y_pred = lr1.predict(X_test)
print("score on test: " + str(lr1.score(X_test, y_test)))
print("score on train: "+ str(lr1.score(X_train_mod1, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_log['1']=acc
/usr/local/lib/python3.10/dist-packages/sklearn/utils/validation.py:1143: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)
/usr/local/lib/python3.10/dist-packages/sklearn/linear_model/_logistic.py:458: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
    https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
  n_iter_i = _check_optimize_result(
score on test: 0.8946699910617679
score on train: 0.8940103110699184
              precision    recall  f1-score   support

           0       0.94      0.76      0.84     30772
           1       0.88      0.97      0.92     54256

    accuracy                           0.89     85028
   macro avg       0.91      0.87      0.88     85028
weighted avg       0.90      0.89      0.89     85028

In [ ]:
from sklearn.metrics import roc_auc_score,accuracy_score
from sklearn.metrics import roc_curve
# ROC curve and AUC
lr1_predproba = lr1.predict_proba(X_test)[:, 1]
AUC_lr1 = roc_auc_score(y_test, lr1_predproba)
print(f'AUC: {AUC_lr1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, lr1_predproba)
plt.plot(fpr, tpr, label='logistic regression Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9581
In [ ]:
from sklearn.ensemble import RandomForestClassifier
import pickle
rf1 = RandomForestClassifier(n_estimators=30, max_depth=10)
rf1.fit(X_train_mod1, y_train)
y_pred = rf1.predict(X_test)
print("score on test: " + str(rf1.score(X_test, y_test)))
print("score on train: "+ str(rf1.score(X_train_mod1, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_rf_b['1']=acc
<ipython-input-8-68bbbc7f51d8>:4: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().
  rf1.fit(X_train_mod1, y_train)
score on test: 0.9373030060685892
score on train: 0.9538956148989167
              precision    recall  f1-score   support

           0       0.90      0.94      0.92     30772
           1       0.96      0.94      0.95     54256

    accuracy                           0.94     85028
   macro avg       0.93      0.94      0.93     85028
weighted avg       0.94      0.94      0.94     85028

In [ ]:
# ROC curve and AUC
rf1_predproba = rf1.predict_proba(X_test)[:, 1]
AUC_rf1 = roc_auc_score(y_test, rf1_predproba)
print(f'AUC: {AUC_rf1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, rf1_predproba)
plt.plot(fpr, tpr, label='random forest Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9724
In [ ]:
import xgboost as xgb
from sklearn import metrics
from sklearn.metrics import (confusion_matrix, accuracy_score, precision_score, recall_score, f1_score)
import matplotlib.pyplot as plt
xgb1 = xgb.XGBClassifier(objective="binary:logistic", random_state=42)
xgb1.fit(X_train_mod1, y_train)
y_pred = xgb1.predict(X_test)
print("score on test: " + str(xgb1.score(X_test, y_test)))
print("score on train: "+ str(xgb1.score(X_train_mod1, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_xgb_b['1']=acc
score on test: 0.971915133838265
score on train: 0.9921508428430748
              precision    recall  f1-score   support

           0       0.96      0.96      0.96     30772
           1       0.98      0.98      0.98     54256

    accuracy                           0.97     85028
   macro avg       0.97      0.97      0.97     85028
weighted avg       0.97      0.97      0.97     85028

In [ ]:
# ROC curve and AUC
xgb1_predproba = xgb1.predict_proba(X_test)[:, 1]
AUC_xgb1 = roc_auc_score(y_test, xgb1_predproba)
print(f'AUC: {AUC_xgb1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, xgb1_predproba)
plt.plot(fpr, tpr, label='Gradient boosting Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9966
In [ ]:
from keras import backend as K
def recall_m(y_true, y_pred):
    true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
    possible_positives = K.sum(K.round(K.clip(y_true, 0, 1)))
    recall = true_positives / (possible_positives + K.epsilon())
    return recall
def precision_m(y_true, y_pred):
    true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
    predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1)))
    precision = true_positives / (predicted_positives + K.epsilon())
    return precision
def f1_m(y_true, y_pred):
    precision = precision_m(y_true, y_pred)
    recall = recall_m(y_true, y_pred)
    return 2*((precision*recall)/(precision+recall+K.epsilon()))
In [ ]:
import keras
from keras import layers
from keras import models
from keras import optimizers
from keras import losses
from keras import callbacks
from keras import metrics

model=models.Sequential()
model.add(layers.Dense(128,activation='relu',input_shape=(42,)))
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(1,activation='sigmoid'))
model.summary

model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy', f1_m, precision_m, recall_m])

earlystopping = callbacks.EarlyStopping(monitor="loss",
                                        mode="min", patience=5,
                                        restore_best_weights=True)
model.fit(X_train_mod1, y_train, batch_size=128, epochs=100, callbacks=[earlystopping])

y_pred = model.predict(X_test)
print("score on test: " + str(model.evaluate(X_test,y_test)[1]))
print("score on train: "+ str(model.evaluate(X_train_mod1,y_train)[1]))
loss, accuracy, f1_score, precision, recall = model.evaluate(X_test, y_test, verbose=0)
scores = model.evaluate(X_test, y_test, verbose=0)
res_nn_b['1']=scores[1]
from sklearn import metrics
y_pred_mat = y_pred.round()
confusion_matrix = metrics.confusion_matrix(y_test, y_pred_mat)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
Epoch 1/100
1349/1349 [==============================] - 4s 2ms/step - loss: 0.2019 - accuracy: 0.9074 - f1_m: 0.9293 - precision_m: 0.9087 - recall_m: 0.9526
Epoch 2/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.1579 - accuracy: 0.9273 - f1_m: 0.9433 - precision_m: 0.9363 - recall_m: 0.9514
Epoch 3/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1401 - accuracy: 0.9359 - f1_m: 0.9497 - precision_m: 0.9486 - recall_m: 0.9516
Epoch 4/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1240 - accuracy: 0.9453 - f1_m: 0.9570 - precision_m: 0.9569 - recall_m: 0.9578
Epoch 5/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1021 - accuracy: 0.9572 - f1_m: 0.9664 - precision_m: 0.9663 - recall_m: 0.9670
Epoch 6/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0918 - accuracy: 0.9616 - f1_m: 0.9698 - precision_m: 0.9701 - recall_m: 0.9700
Epoch 7/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0854 - accuracy: 0.9643 - f1_m: 0.9719 - precision_m: 0.9731 - recall_m: 0.9711
Epoch 8/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0816 - accuracy: 0.9663 - f1_m: 0.9735 - precision_m: 0.9753 - recall_m: 0.9721
Epoch 9/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0792 - accuracy: 0.9668 - f1_m: 0.9738 - precision_m: 0.9759 - recall_m: 0.9721
Epoch 10/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0776 - accuracy: 0.9679 - f1_m: 0.9747 - precision_m: 0.9773 - recall_m: 0.9724
Epoch 11/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0752 - accuracy: 0.9690 - f1_m: 0.9755 - precision_m: 0.9782 - recall_m: 0.9731
Epoch 12/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0729 - accuracy: 0.9697 - f1_m: 0.9761 - precision_m: 0.9789 - recall_m: 0.9736
Epoch 13/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0721 - accuracy: 0.9697 - f1_m: 0.9761 - precision_m: 0.9787 - recall_m: 0.9738
Epoch 14/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0706 - accuracy: 0.9705 - f1_m: 0.9767 - precision_m: 0.9796 - recall_m: 0.9741
Epoch 15/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0702 - accuracy: 0.9702 - f1_m: 0.9765 - precision_m: 0.9796 - recall_m: 0.9736
Epoch 16/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0689 - accuracy: 0.9713 - f1_m: 0.9773 - precision_m: 0.9804 - recall_m: 0.9746
Epoch 17/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0674 - accuracy: 0.9719 - f1_m: 0.9778 - precision_m: 0.9811 - recall_m: 0.9747
Epoch 18/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0664 - accuracy: 0.9725 - f1_m: 0.9783 - precision_m: 0.9813 - recall_m: 0.9755
Epoch 19/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0654 - accuracy: 0.9727 - f1_m: 0.9784 - precision_m: 0.9818 - recall_m: 0.9754
Epoch 20/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0650 - accuracy: 0.9732 - f1_m: 0.9788 - precision_m: 0.9822 - recall_m: 0.9758
Epoch 21/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0638 - accuracy: 0.9733 - f1_m: 0.9790 - precision_m: 0.9823 - recall_m: 0.9759
Epoch 22/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0638 - accuracy: 0.9736 - f1_m: 0.9792 - precision_m: 0.9822 - recall_m: 0.9764
Epoch 23/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0618 - accuracy: 0.9740 - f1_m: 0.9795 - precision_m: 0.9826 - recall_m: 0.9766
Epoch 24/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0613 - accuracy: 0.9741 - f1_m: 0.9796 - precision_m: 0.9827 - recall_m: 0.9768
Epoch 25/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0603 - accuracy: 0.9747 - f1_m: 0.9801 - precision_m: 0.9834 - recall_m: 0.9771
Epoch 26/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0605 - accuracy: 0.9747 - f1_m: 0.9800 - precision_m: 0.9833 - recall_m: 0.9770
Epoch 27/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0596 - accuracy: 0.9749 - f1_m: 0.9802 - precision_m: 0.9836 - recall_m: 0.9770
Epoch 28/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0585 - accuracy: 0.9756 - f1_m: 0.9808 - precision_m: 0.9839 - recall_m: 0.9779
Epoch 29/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0582 - accuracy: 0.9755 - f1_m: 0.9807 - precision_m: 0.9839 - recall_m: 0.9778
Epoch 30/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0573 - accuracy: 0.9761 - f1_m: 0.9811 - precision_m: 0.9844 - recall_m: 0.9782
Epoch 31/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0573 - accuracy: 0.9760 - f1_m: 0.9811 - precision_m: 0.9843 - recall_m: 0.9781
Epoch 32/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0567 - accuracy: 0.9764 - f1_m: 0.9813 - precision_m: 0.9847 - recall_m: 0.9783
Epoch 33/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0564 - accuracy: 0.9764 - f1_m: 0.9814 - precision_m: 0.9846 - recall_m: 0.9785
Epoch 34/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0556 - accuracy: 0.9767 - f1_m: 0.9816 - precision_m: 0.9846 - recall_m: 0.9788
Epoch 35/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0547 - accuracy: 0.9775 - f1_m: 0.9823 - precision_m: 0.9854 - recall_m: 0.9794
Epoch 36/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0541 - accuracy: 0.9771 - f1_m: 0.9820 - precision_m: 0.9851 - recall_m: 0.9791
Epoch 37/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0533 - accuracy: 0.9779 - f1_m: 0.9826 - precision_m: 0.9856 - recall_m: 0.9797
Epoch 38/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0535 - accuracy: 0.9776 - f1_m: 0.9823 - precision_m: 0.9855 - recall_m: 0.9794
Epoch 39/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0528 - accuracy: 0.9780 - f1_m: 0.9826 - precision_m: 0.9855 - recall_m: 0.9800
Epoch 40/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0523 - accuracy: 0.9780 - f1_m: 0.9826 - precision_m: 0.9857 - recall_m: 0.9797
Epoch 41/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0521 - accuracy: 0.9782 - f1_m: 0.9828 - precision_m: 0.9860 - recall_m: 0.9798
Epoch 42/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0511 - accuracy: 0.9786 - f1_m: 0.9831 - precision_m: 0.9861 - recall_m: 0.9804
Epoch 43/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0510 - accuracy: 0.9785 - f1_m: 0.9830 - precision_m: 0.9860 - recall_m: 0.9802
Epoch 44/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0507 - accuracy: 0.9789 - f1_m: 0.9833 - precision_m: 0.9863 - recall_m: 0.9806
Epoch 45/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0507 - accuracy: 0.9787 - f1_m: 0.9832 - precision_m: 0.9861 - recall_m: 0.9805
Epoch 46/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0490 - accuracy: 0.9794 - f1_m: 0.9837 - precision_m: 0.9871 - recall_m: 0.9806
Epoch 47/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0491 - accuracy: 0.9793 - f1_m: 0.9837 - precision_m: 0.9869 - recall_m: 0.9808
Epoch 48/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0484 - accuracy: 0.9797 - f1_m: 0.9840 - precision_m: 0.9871 - recall_m: 0.9811
Epoch 49/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0482 - accuracy: 0.9797 - f1_m: 0.9840 - precision_m: 0.9870 - recall_m: 0.9812
Epoch 50/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0483 - accuracy: 0.9797 - f1_m: 0.9840 - precision_m: 0.9872 - recall_m: 0.9810
Epoch 51/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0479 - accuracy: 0.9800 - f1_m: 0.9842 - precision_m: 0.9872 - recall_m: 0.9815
Epoch 52/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0471 - accuracy: 0.9802 - f1_m: 0.9844 - precision_m: 0.9872 - recall_m: 0.9817
Epoch 53/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0465 - accuracy: 0.9802 - f1_m: 0.9844 - precision_m: 0.9873 - recall_m: 0.9818
Epoch 54/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0462 - accuracy: 0.9808 - f1_m: 0.9848 - precision_m: 0.9876 - recall_m: 0.9822
Epoch 55/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0461 - accuracy: 0.9807 - f1_m: 0.9848 - precision_m: 0.9876 - recall_m: 0.9823
Epoch 56/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0460 - accuracy: 0.9809 - f1_m: 0.9849 - precision_m: 0.9878 - recall_m: 0.9823
Epoch 57/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0463 - accuracy: 0.9806 - f1_m: 0.9847 - precision_m: 0.9875 - recall_m: 0.9821
Epoch 58/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0457 - accuracy: 0.9811 - f1_m: 0.9852 - precision_m: 0.9878 - recall_m: 0.9828
Epoch 59/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0444 - accuracy: 0.9815 - f1_m: 0.9854 - precision_m: 0.9880 - recall_m: 0.9830
Epoch 60/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0443 - accuracy: 0.9816 - f1_m: 0.9855 - precision_m: 0.9881 - recall_m: 0.9831
Epoch 61/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0445 - accuracy: 0.9813 - f1_m: 0.9853 - precision_m: 0.9879 - recall_m: 0.9828
Epoch 62/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0440 - accuracy: 0.9816 - f1_m: 0.9855 - precision_m: 0.9881 - recall_m: 0.9830
Epoch 63/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0438 - accuracy: 0.9819 - f1_m: 0.9857 - precision_m: 0.9886 - recall_m: 0.9830
Epoch 64/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0428 - accuracy: 0.9820 - f1_m: 0.9858 - precision_m: 0.9883 - recall_m: 0.9835
Epoch 65/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0423 - accuracy: 0.9820 - f1_m: 0.9858 - precision_m: 0.9885 - recall_m: 0.9834
Epoch 66/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0422 - accuracy: 0.9821 - f1_m: 0.9859 - precision_m: 0.9884 - recall_m: 0.9835
Epoch 67/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0423 - accuracy: 0.9822 - f1_m: 0.9860 - precision_m: 0.9883 - recall_m: 0.9839
Epoch 68/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0422 - accuracy: 0.9821 - f1_m: 0.9859 - precision_m: 0.9885 - recall_m: 0.9835
Epoch 69/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0416 - accuracy: 0.9827 - f1_m: 0.9863 - precision_m: 0.9891 - recall_m: 0.9838
Epoch 70/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0417 - accuracy: 0.9826 - f1_m: 0.9863 - precision_m: 0.9889 - recall_m: 0.9838
Epoch 71/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0417 - accuracy: 0.9826 - f1_m: 0.9863 - precision_m: 0.9890 - recall_m: 0.9837
Epoch 72/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0402 - accuracy: 0.9832 - f1_m: 0.9868 - precision_m: 0.9892 - recall_m: 0.9845
Epoch 73/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0416 - accuracy: 0.9827 - f1_m: 0.9863 - precision_m: 0.9888 - recall_m: 0.9840
Epoch 74/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0412 - accuracy: 0.9828 - f1_m: 0.9865 - precision_m: 0.9889 - recall_m: 0.9842
Epoch 75/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0406 - accuracy: 0.9834 - f1_m: 0.9869 - precision_m: 0.9895 - recall_m: 0.9844
Epoch 76/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0397 - accuracy: 0.9834 - f1_m: 0.9870 - precision_m: 0.9892 - recall_m: 0.9849
Epoch 77/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0391 - accuracy: 0.9838 - f1_m: 0.9873 - precision_m: 0.9897 - recall_m: 0.9850
Epoch 78/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0395 - accuracy: 0.9833 - f1_m: 0.9868 - precision_m: 0.9893 - recall_m: 0.9845
Epoch 79/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0383 - accuracy: 0.9842 - f1_m: 0.9875 - precision_m: 0.9899 - recall_m: 0.9854
Epoch 80/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0387 - accuracy: 0.9838 - f1_m: 0.9872 - precision_m: 0.9894 - recall_m: 0.9852
Epoch 81/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0382 - accuracy: 0.9840 - f1_m: 0.9874 - precision_m: 0.9895 - recall_m: 0.9855
Epoch 82/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0379 - accuracy: 0.9842 - f1_m: 0.9875 - precision_m: 0.9899 - recall_m: 0.9853
Epoch 83/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0379 - accuracy: 0.9841 - f1_m: 0.9875 - precision_m: 0.9897 - recall_m: 0.9855
Epoch 84/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0378 - accuracy: 0.9842 - f1_m: 0.9875 - precision_m: 0.9899 - recall_m: 0.9853
Epoch 85/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0372 - accuracy: 0.9844 - f1_m: 0.9877 - precision_m: 0.9900 - recall_m: 0.9855
Epoch 86/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0371 - accuracy: 0.9847 - f1_m: 0.9879 - precision_m: 0.9901 - recall_m: 0.9859
Epoch 87/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0363 - accuracy: 0.9849 - f1_m: 0.9881 - precision_m: 0.9903 - recall_m: 0.9861
Epoch 88/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0367 - accuracy: 0.9847 - f1_m: 0.9879 - precision_m: 0.9903 - recall_m: 0.9858
Epoch 89/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0363 - accuracy: 0.9850 - f1_m: 0.9882 - precision_m: 0.9902 - recall_m: 0.9863
Epoch 90/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0359 - accuracy: 0.9852 - f1_m: 0.9883 - precision_m: 0.9904 - recall_m: 0.9864
Epoch 91/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0366 - accuracy: 0.9851 - f1_m: 0.9882 - precision_m: 0.9905 - recall_m: 0.9861
Epoch 92/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0359 - accuracy: 0.9850 - f1_m: 0.9882 - precision_m: 0.9902 - recall_m: 0.9862
Epoch 93/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0353 - accuracy: 0.9852 - f1_m: 0.9883 - precision_m: 0.9906 - recall_m: 0.9862
Epoch 94/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0344 - accuracy: 0.9856 - f1_m: 0.9886 - precision_m: 0.9907 - recall_m: 0.9867
Epoch 95/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0357 - accuracy: 0.9851 - f1_m: 0.9882 - precision_m: 0.9906 - recall_m: 0.9861
Epoch 96/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0355 - accuracy: 0.9854 - f1_m: 0.9885 - precision_m: 0.9906 - recall_m: 0.9866
Epoch 97/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0356 - accuracy: 0.9857 - f1_m: 0.9887 - precision_m: 0.9906 - recall_m: 0.9870
Epoch 98/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0335 - accuracy: 0.9860 - f1_m: 0.9890 - precision_m: 0.9909 - recall_m: 0.9872
Epoch 99/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0353 - accuracy: 0.9858 - f1_m: 0.9888 - precision_m: 0.9909 - recall_m: 0.9868
Epoch 100/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0343 - accuracy: 0.9861 - f1_m: 0.9890 - precision_m: 0.9911 - recall_m: 0.9871
2658/2658 [==============================] - 3s 936us/step
2658/2658 [==============================] - 3s 1ms/step - loss: 0.0833 - accuracy: 0.9731 - f1_m: 0.9783 - precision_m: 0.9840 - recall_m: 0.9737
score on test: 0.9731147289276123
5395/5395 [==============================] - 6s 1ms/step - loss: 0.0341 - accuracy: 0.9862 - f1_m: 0.9889 - precision_m: 0.9956 - recall_m: 0.9828
score on train: 0.9862306714057922
In [ ]:
from sklearn.metrics import auc
fpr_keras, tpr_keras, thresholds_keras = roc_curve(y_test, y_pred)
auc_keras = auc(fpr_keras, tpr_keras)
plt.plot([0, 1], [0, 1], 'k--')
plt.plot(fpr_keras, tpr_keras, label='Keras (area = {:.3f})'.format(auc_keras))
plt.xlabel('False positive rate')
plt.ylabel('True positive rate')
plt.title('ROC curve')
plt.legend(loc='best')
plt.show()
In [ ]:
attack_cat=['Normal', 'Generic', 'Exploits', 'Fuzzers', 'DoS', 'Reconnaissance', 'Analysis', 'Backdoor', 'Shellcode', 'Worms']
import numpy as np
import itertools
def plot_confusion_matrix(cm, target_names, title='Confusion matrix', cmap=None, normalize=True):
    accuracy = np.trace(cm) / float(np.sum(cm))
    misclass = 1 - accuracy
    if cmap is None:
        cmap = plt.get_cmap('Blues')
    plt.figure(figsize=(8, 6))
    plt.imshow(cm, interpolation='nearest', cmap=cmap)
    plt.title(title)
    plt.colorbar()
    if target_names is not None:
        tick_marks = np.arange(len(target_names))
        plt.xticks(tick_marks, target_names, rotation=45)
        plt.yticks(tick_marks, target_names)
    if normalize:
        cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
    thresh = cm.max() / 1.5 if normalize else cm.max() / 2
    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
        if normalize:
            plt.text(j, i, "{:0.2f}".format(cm[i, j]),
                     horizontalalignment="center",
                     color="white" if cm[i, j] > thresh else "black")
        else:
            plt.text(j, i, "{:,}".format(cm[i, j]),
                     horizontalalignment="center",
                     color="white" if cm[i, j] > thresh else "black")

    plt.tight_layout()
    plt.ylabel('True label')
    plt.xlabel('Predicted label\naccuracy={:0.4f}; misclass={:0.4f}'.format(accuracy, misclass))
    plt.show()
In [ ]:
from sklearn.tree import DecisionTreeClassifier
dtree1 = DecisionTreeClassifier(max_depth = 10).fit(X_train_mod1, y_multi_train)
y_pred = dtree1.predict(X_test)
print("score on test: " + str(dtree1.score(X_test, y_multi_test)))
print("score on train: "+ str(dtree1.score(X_train_mod1, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_tree['1']=acc
score on test: 0.8079338570823729
score on train: 0.8272200660371893
              precision    recall  f1-score   support

           0       0.91      0.93      0.92     30772
           1       0.97      0.97      0.97     19423
           2       0.60      0.84      0.70     14709
           3       0.68      0.59      0.63      7921
           4       0.40      0.13      0.20      5357
           5       0.70      0.72      0.71      4578
           6       0.69      0.02      0.05       909
           7       0.16      0.02      0.03       780
           8       0.00      0.00      0.00       513
           9       1.00      0.06      0.11        66

    accuracy                           0.81     85028
   macro avg       0.61      0.43      0.43     85028
weighted avg       0.79      0.81      0.79     85028

/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
In [ ]:
import yellowbrick
from yellowbrick.classifier import ROCAUC

def plot_ROC_curve(model, xtrain, ytrain, xtest, ytest):
    # Creating visualization
    visualizer = ROCAUC(model)
    # Fitting to the training data first then scoring with the test data
    visualizer.fit(xtrain, ytrain)
    visualizer.score(xtest, ytest)
    visualizer.show()
    return visualizer
In [ ]:
plot_ROC_curve(dtree1, X_train_mod1, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for DecisionTreeClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=DecisionTreeClassifier(max_depth=10))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for DecisionTreeClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=DecisionTreeClassifier(max_depth=10))
DecisionTreeClassifier(max_depth=10)
DecisionTreeClassifier(max_depth=10)
In [ ]:
rf2 = RandomForestClassifier(n_estimators=30, max_depth=10).fit(X_train_mod1, y_multi_train)
y_pred = rf2.predict(X_test)
print("score on test: " + str(rf2.score(X_test, y_multi_test)))
print("score on train: "+ str(rf2.score(X_train_mod1, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
accuracy = rf2.score(X_test, y_multi_test)
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_rf_m['1']=acc
<ipython-input-19-7521fd7bd576>:1: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().
  rf2 = RandomForestClassifier(n_estimators=30, max_depth=10).fit(X_train_mod1, y_multi_train)
score on test: 0.7417203744648821
score on train: 0.8156983143138504
              precision    recall  f1-score   support

           0       0.64      0.97      0.77     30772
           1       1.00      0.94      0.97     19423
           2       0.73      0.61      0.67     14709
           3       0.75      0.43      0.55      7921
           4       0.62      0.01      0.02      5357
           5       0.88      0.52      0.65      4578
           6       1.00      0.00      0.01       909
           7       0.00      0.00      0.00       780
           8       0.00      0.00      0.00       513
           9       0.00      0.00      0.00        66

    accuracy                           0.74     85028
   macro avg       0.56      0.35      0.36     85028
weighted avg       0.75      0.74      0.70     85028

/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
In [ ]:
plot_ROC_curve(rf2, X_train_mod1, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for RandomForestClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=RandomForestClassifier(max_depth=10, n_estimators=30))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for RandomForestClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=RandomForestClassifier(max_depth=10, n_estimators=30))
RandomForestClassifier(max_depth=10, n_estimators=30)
RandomForestClassifier(max_depth=10, n_estimators=30)
In [ ]:
xgb2 = xgb.XGBClassifier(objective="multi:softprob", random_state=42)
xgb2.fit(X_train_mod1, y_multi_train)
y_pred = xgb2.predict(X_test)
print("score on test: " + str(xgb2.score(X_test, y_multi_test)))
print("score on train: "+ str(xgb2.score(X_train_mod1, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_xgb_m['1']=acc
score on test: 0.8551183139671638
score on train: 0.9077854370619244
              precision    recall  f1-score   support

           0       0.95      0.97      0.96     30772
           1       1.00      0.98      0.99     19423
           2       0.67      0.80      0.73     14709
           3       0.80      0.77      0.79      7921
           4       0.41      0.38      0.39      5357
           5       0.91      0.76      0.83      4578
           6       0.67      0.09      0.17       909
           7       0.57      0.08      0.14       780
           8       0.74      0.34      0.47       513
           9       0.71      0.26      0.38        66

    accuracy                           0.86     85028
   macro avg       0.74      0.54      0.58     85028
weighted avg       0.86      0.86      0.85     85028

In [ ]:
plot_ROC_curve(xgb2, X_train_mod1, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for XGBClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=XGBClassifier(base_score=None, booster=None, callbacks=None,
                               colsample_bylevel=None, colsample_bynode=None,
                               colsample_bytree=None,
                               early_stopping_rounds=None,
                               enable_categorical=False, eval_metric=None,
                               feature_types=None, gamma=None, g...
                               grow_policy=None, importance_type=None,
                               interaction_constraints=None, learning_rate=None,
                               max_bin=None, max_cat_threshold=None,
                               max_cat_to_onehot=None, max_delta_step=None,
                               max_depth=None, max_leaves=None,
                               min_child_weight=None, missing=nan,
                               monotone_constraints=None, n_estimators=100,
                               n_jobs=None, num_parallel_tree=None,
                               objective='multi:softprob', predictor=None, ...))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for XGBClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=XGBClassifier(base_score=None, booster=None, callbacks=None,
                               colsample_bylevel=None, colsample_bynode=None,
                               colsample_bytree=None,
                               early_stopping_rounds=None,
                               enable_categorical=False, eval_metric=None,
                               feature_types=None, gamma=None, g...
                               grow_policy=None, importance_type=None,
                               interaction_constraints=None, learning_rate=None,
                               max_bin=None, max_cat_threshold=None,
                               max_cat_to_onehot=None, max_delta_step=None,
                               max_depth=None, max_leaves=None,
                               min_child_weight=None, missing=nan,
                               monotone_constraints=None, n_estimators=100,
                               n_jobs=None, num_parallel_tree=None,
                               objective='multi:softprob', predictor=None, ...))
XGBClassifier(base_score=None, booster=None, callbacks=None,
              colsample_bylevel=None, colsample_bynode=None,
              colsample_bytree=None, early_stopping_rounds=None,
              enable_categorical=False, eval_metric=None, feature_types=None,
              gamma=None, gpu_id=None, grow_policy=None, importance_type=None,
              interaction_constraints=None, learning_rate=None, max_bin=None,
              max_cat_threshold=None, max_cat_to_onehot=None,
              max_delta_step=None, max_depth=None, max_leaves=None,
              min_child_weight=None, missing=nan, monotone_constraints=None,
              n_estimators=100, n_jobs=None, num_parallel_tree=None,
              objective='multi:softprob', predictor=None, ...)
XGBClassifier(base_score=None, booster=None, callbacks=None,
              colsample_bylevel=None, colsample_bynode=None,
              colsample_bytree=None, early_stopping_rounds=None,
              enable_categorical=False, eval_metric=None, feature_types=None,
              gamma=None, gpu_id=None, grow_policy=None, importance_type=None,
              interaction_constraints=None, learning_rate=None, max_bin=None,
              max_cat_threshold=None, max_cat_to_onehot=None,
              max_delta_step=None, max_depth=None, max_leaves=None,
              min_child_weight=None, missing=nan, monotone_constraints=None,
              n_estimators=100, n_jobs=None, num_parallel_tree=None,
              objective='multi:softprob', predictor=None, ...)
In [ ]:
from keras import metrics
model2 = models.Sequential()
model2.add(layers.Dense(128, input_shape = (42,), activation = "relu"))
model2.add(layers.Dense(64, activation = "relu"))
model2.add(layers.Dense(64,activation="relu"))
model2.add(layers.Dense(10, activation = "softmax"))
model2.compile(optimizer='adam', loss="sparse_categorical_crossentropy", metrics = ["accuracy", f1_m, precision_m, recall_m])
model2.summary()

earlystopping = callbacks.EarlyStopping(monitor="loss",
                                        mode="min", patience=5,
                                        restore_best_weights=True)

model2.fit(X_train_mod1,y_multi_train,epochs=100,batch_size=128,callbacks=[earlystopping])
y_pred_arr = model2.predict(X_test)
y_pred = []
for el in y_pred_arr:
    ind = np.argmax(el)
    y_pred.append(ind)
print("score on test: " + str(model2.evaluate(X_test,y_multi_test)[1]))
print("score on train: "+ str(model2.evaluate(X_train_mod1,y_multi_train)[1]))
scores = model2.evaluate(X_test, y_multi_test, verbose=0)
res_nn_m['1']=scores[1]
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
Model: "sequential_1"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense_4 (Dense)             (None, 128)               5504      
                                                                 
 dense_5 (Dense)             (None, 64)                8256      
                                                                 
 dense_6 (Dense)             (None, 64)                4160      
                                                                 
 dense_7 (Dense)             (None, 10)                650       
                                                                 
=================================================================
Total params: 18,570
Trainable params: 18,570
Non-trainable params: 0
_________________________________________________________________
Epoch 1/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.7637 - accuracy: 0.7211 - f1_m: 1.6319 - precision_m: 6471460.5000 - recall_m: 1.6575
Epoch 2/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5989 - accuracy: 0.7755 - f1_m: 1.4359 - precision_m: 1.3248 - recall_m: 1.5754
Epoch 3/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5541 - accuracy: 0.7908 - f1_m: 1.3753 - precision_m: 1.2517 - recall_m: 1.5333
Epoch 4/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5307 - accuracy: 0.7980 - f1_m: 1.3421 - precision_m: 1.2131 - recall_m: 1.5090
Epoch 5/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5172 - accuracy: 0.8027 - f1_m: 1.3278 - precision_m: 1.1965 - recall_m: 1.4987
Epoch 6/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5037 - accuracy: 0.8077 - f1_m: 1.3137 - precision_m: 1.1789 - recall_m: 1.4901
Epoch 7/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4933 - accuracy: 0.8100 - f1_m: 1.3016 - precision_m: 1.1654 - recall_m: 1.4802
Epoch 8/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4846 - accuracy: 0.8141 - f1_m: 1.2919 - precision_m: 1.1537 - recall_m: 1.4743
Epoch 9/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4760 - accuracy: 0.8171 - f1_m: 1.2838 - precision_m: 1.1434 - recall_m: 1.4700
Epoch 10/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4679 - accuracy: 0.8205 - f1_m: 1.2748 - precision_m: 1.1340 - recall_m: 1.4619
Epoch 11/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4581 - accuracy: 0.8239 - f1_m: 1.2682 - precision_m: 1.1251 - recall_m: 1.4593
Epoch 12/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4510 - accuracy: 0.8272 - f1_m: 1.2589 - precision_m: 1.1152 - recall_m: 1.4509
Epoch 13/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4449 - accuracy: 0.8305 - f1_m: 1.2534 - precision_m: 1.1097 - recall_m: 1.4462
Epoch 14/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4381 - accuracy: 0.8321 - f1_m: 1.2504 - precision_m: 1.1065 - recall_m: 1.4438
Epoch 15/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4334 - accuracy: 0.8338 - f1_m: 1.2471 - precision_m: 1.1021 - recall_m: 1.4423
Epoch 16/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4278 - accuracy: 0.8356 - f1_m: 1.2408 - precision_m: 1.0940 - recall_m: 1.4387
Epoch 17/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4237 - accuracy: 0.8376 - f1_m: 1.2389 - precision_m: 1.0923 - recall_m: 1.4374
Epoch 18/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4195 - accuracy: 0.8381 - f1_m: 1.2356 - precision_m: 1.0879 - recall_m: 1.4358
Epoch 19/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4166 - accuracy: 0.8395 - f1_m: 1.2340 - precision_m: 1.0857 - recall_m: 1.4351
Epoch 20/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4140 - accuracy: 0.8400 - f1_m: 1.2325 - precision_m: 1.0841 - recall_m: 1.4339
Epoch 21/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4096 - accuracy: 0.8416 - f1_m: 1.2298 - precision_m: 1.0808 - recall_m: 1.4325
Epoch 22/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4071 - accuracy: 0.8428 - f1_m: 1.2270 - precision_m: 1.0779 - recall_m: 1.4299
Epoch 23/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4043 - accuracy: 0.8438 - f1_m: 1.2221 - precision_m: 1.0728 - recall_m: 1.4255
Epoch 24/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4016 - accuracy: 0.8446 - f1_m: 1.2211 - precision_m: 1.0711 - recall_m: 1.4258
Epoch 25/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4007 - accuracy: 0.8449 - f1_m: 1.2229 - precision_m: 1.0735 - recall_m: 1.4266
Epoch 26/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3992 - accuracy: 0.8451 - f1_m: 1.2193 - precision_m: 1.0699 - recall_m: 1.4231
Epoch 27/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3962 - accuracy: 0.8462 - f1_m: 1.2166 - precision_m: 1.0662 - recall_m: 1.4224
Epoch 28/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3950 - accuracy: 0.8474 - f1_m: 1.2142 - precision_m: 1.0637 - recall_m: 1.4200
Epoch 29/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3935 - accuracy: 0.8472 - f1_m: 1.2155 - precision_m: 1.0655 - recall_m: 1.4209
Epoch 30/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3925 - accuracy: 0.8472 - f1_m: 1.2165 - precision_m: 1.0656 - recall_m: 1.4230
Epoch 31/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3900 - accuracy: 0.8484 - f1_m: 1.2143 - precision_m: 1.0634 - recall_m: 1.4212
Epoch 32/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3890 - accuracy: 0.8487 - f1_m: 1.2123 - precision_m: 1.0615 - recall_m: 1.4185
Epoch 33/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3885 - accuracy: 0.8484 - f1_m: 1.2129 - precision_m: 1.0623 - recall_m: 1.4196
Epoch 34/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3871 - accuracy: 0.8490 - f1_m: 1.2095 - precision_m: 1.0581 - recall_m: 1.4173
Epoch 35/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3853 - accuracy: 0.8499 - f1_m: 1.2078 - precision_m: 1.0565 - recall_m: 1.4150
Epoch 36/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3850 - accuracy: 0.8496 - f1_m: 1.2096 - precision_m: 1.0586 - recall_m: 1.4162
Epoch 37/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3842 - accuracy: 0.8503 - f1_m: 1.2055 - precision_m: 1.0538 - recall_m: 1.4142
Epoch 38/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3825 - accuracy: 0.8509 - f1_m: 1.2064 - precision_m: 1.0548 - recall_m: 1.4145
Epoch 39/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3808 - accuracy: 0.8513 - f1_m: 1.2056 - precision_m: 1.0542 - recall_m: 1.4134
Epoch 40/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3808 - accuracy: 0.8514 - f1_m: 1.2048 - precision_m: 1.0539 - recall_m: 1.4120
Epoch 41/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3802 - accuracy: 0.8517 - f1_m: 1.2041 - precision_m: 1.0523 - recall_m: 1.4128
Epoch 42/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3780 - accuracy: 0.8519 - f1_m: 1.2040 - precision_m: 1.0524 - recall_m: 1.4121
Epoch 43/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3775 - accuracy: 0.8530 - f1_m: 1.2020 - precision_m: 1.0498 - recall_m: 1.4113
Epoch 44/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3759 - accuracy: 0.8527 - f1_m: 1.2003 - precision_m: 1.0476 - recall_m: 1.4103
Epoch 45/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.3750 - accuracy: 0.8530 - f1_m: 1.2016 - precision_m: 1.0496 - recall_m: 1.4107
Epoch 46/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3743 - accuracy: 0.8533 - f1_m: 1.2014 - precision_m: 1.0489 - recall_m: 1.4116
Epoch 47/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3745 - accuracy: 0.8533 - f1_m: 1.2001 - precision_m: 1.0467 - recall_m: 1.4113
Epoch 48/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3724 - accuracy: 0.8541 - f1_m: 1.1978 - precision_m: 1.0448 - recall_m: 1.4087
Epoch 49/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3731 - accuracy: 0.8541 - f1_m: 1.1975 - precision_m: 1.0452 - recall_m: 1.4075
Epoch 50/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3711 - accuracy: 0.8544 - f1_m: 1.1948 - precision_m: 1.0419 - recall_m: 1.4058
Epoch 51/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3702 - accuracy: 0.8546 - f1_m: 1.1983 - precision_m: 1.0457 - recall_m: 1.4089
Epoch 52/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3702 - accuracy: 0.8540 - f1_m: 1.1966 - precision_m: 1.0443 - recall_m: 1.4073
Epoch 53/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3686 - accuracy: 0.8559 - f1_m: 1.1949 - precision_m: 1.0413 - recall_m: 1.4073
Epoch 54/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3704 - accuracy: 0.8549 - f1_m: 1.1948 - precision_m: 1.0423 - recall_m: 1.4055
Epoch 55/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3687 - accuracy: 0.8554 - f1_m: 1.1964 - precision_m: 1.0432 - recall_m: 1.4084
Epoch 56/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3665 - accuracy: 0.8560 - f1_m: 1.1927 - precision_m: 1.0386 - recall_m: 1.4060
Epoch 57/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3659 - accuracy: 0.8564 - f1_m: 1.1945 - precision_m: 1.0410 - recall_m: 1.4065
Epoch 58/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3657 - accuracy: 0.8559 - f1_m: 1.1933 - precision_m: 1.0404 - recall_m: 1.4047
Epoch 59/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3654 - accuracy: 0.8562 - f1_m: 1.1932 - precision_m: 1.0397 - recall_m: 1.4054
Epoch 60/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3654 - accuracy: 0.8560 - f1_m: 1.1919 - precision_m: 1.0380 - recall_m: 1.4048
Epoch 61/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3632 - accuracy: 0.8565 - f1_m: 1.1886 - precision_m: 1.0347 - recall_m: 1.4021
Epoch 62/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3628 - accuracy: 0.8570 - f1_m: 1.1923 - precision_m: 1.0390 - recall_m: 1.4046
Epoch 63/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3629 - accuracy: 0.8570 - f1_m: 1.1916 - precision_m: 1.0377 - recall_m: 1.4047
Epoch 64/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3621 - accuracy: 0.8574 - f1_m: 1.1908 - precision_m: 1.0376 - recall_m: 1.4029
Epoch 65/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3623 - accuracy: 0.8573 - f1_m: 1.1876 - precision_m: 1.0334 - recall_m: 1.4013
Epoch 66/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3604 - accuracy: 0.8577 - f1_m: 1.1892 - precision_m: 1.0358 - recall_m: 1.4017
Epoch 67/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3613 - accuracy: 0.8576 - f1_m: 1.1896 - precision_m: 1.0351 - recall_m: 1.4035
Epoch 68/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3599 - accuracy: 0.8575 - f1_m: 1.1902 - precision_m: 1.0359 - recall_m: 1.4042
Epoch 69/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3596 - accuracy: 0.8578 - f1_m: 1.1871 - precision_m: 1.0333 - recall_m: 1.4003
Epoch 70/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3585 - accuracy: 0.8581 - f1_m: 1.1881 - precision_m: 1.0338 - recall_m: 1.4025
Epoch 71/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3583 - accuracy: 0.8583 - f1_m: 1.1886 - precision_m: 1.0342 - recall_m: 1.4028
Epoch 72/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3574 - accuracy: 0.8589 - f1_m: 1.1834 - precision_m: 1.0292 - recall_m: 1.3976
Epoch 73/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3575 - accuracy: 0.8588 - f1_m: 1.1873 - precision_m: 1.0332 - recall_m: 1.4011
Epoch 74/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3563 - accuracy: 0.8589 - f1_m: 1.1854 - precision_m: 1.0308 - recall_m: 1.4003
Epoch 75/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3571 - accuracy: 0.8590 - f1_m: 1.1866 - precision_m: 1.0323 - recall_m: 1.4008
Epoch 76/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3549 - accuracy: 0.8595 - f1_m: 1.1849 - precision_m: 1.0306 - recall_m: 1.3994
Epoch 77/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3558 - accuracy: 0.8594 - f1_m: 1.1858 - precision_m: 1.0314 - recall_m: 1.4001
Epoch 78/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3556 - accuracy: 0.8595 - f1_m: 1.1835 - precision_m: 1.0291 - recall_m: 1.3977
Epoch 79/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3542 - accuracy: 0.8595 - f1_m: 1.1809 - precision_m: 1.0254 - recall_m: 1.3974
Epoch 80/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3540 - accuracy: 0.8600 - f1_m: 1.1833 - precision_m: 1.0289 - recall_m: 1.3977
Epoch 81/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3525 - accuracy: 0.8609 - f1_m: 1.1845 - precision_m: 1.0303 - recall_m: 1.3986
Epoch 82/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3531 - accuracy: 0.8602 - f1_m: 1.1812 - precision_m: 1.0267 - recall_m: 1.3959
Epoch 83/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3533 - accuracy: 0.8607 - f1_m: 1.1831 - precision_m: 1.0288 - recall_m: 1.3975
Epoch 84/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3516 - accuracy: 0.8609 - f1_m: 1.1813 - precision_m: 1.0265 - recall_m: 1.3967
Epoch 85/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3524 - accuracy: 0.8601 - f1_m: 1.1821 - precision_m: 1.0274 - recall_m: 1.3976
Epoch 86/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3510 - accuracy: 0.8609 - f1_m: 1.1805 - precision_m: 1.0256 - recall_m: 1.3959
Epoch 87/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3510 - accuracy: 0.8616 - f1_m: 1.1816 - precision_m: 1.0261 - recall_m: 1.3980
Epoch 88/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3497 - accuracy: 0.8616 - f1_m: 1.1824 - precision_m: 1.0279 - recall_m: 1.3971
Epoch 89/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3502 - accuracy: 0.8610 - f1_m: 1.1798 - precision_m: 1.0245 - recall_m: 1.3959
Epoch 90/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3495 - accuracy: 0.8623 - f1_m: 1.1814 - precision_m: 1.0265 - recall_m: 1.3968
Epoch 91/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3493 - accuracy: 0.8620 - f1_m: 1.1809 - precision_m: 1.0260 - recall_m: 1.3966
Epoch 92/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3490 - accuracy: 0.8621 - f1_m: 1.1804 - precision_m: 1.0253 - recall_m: 1.3964
Epoch 93/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3483 - accuracy: 0.8617 - f1_m: 1.1814 - precision_m: 1.0265 - recall_m: 1.3972
Epoch 94/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3484 - accuracy: 0.8622 - f1_m: 1.1793 - precision_m: 1.0243 - recall_m: 1.3952
Epoch 95/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3470 - accuracy: 0.8624 - f1_m: 1.1788 - precision_m: 1.0235 - recall_m: 1.3949
Epoch 96/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3483 - accuracy: 0.8627 - f1_m: 1.1784 - precision_m: 1.0231 - recall_m: 1.3949
Epoch 97/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.3457 - accuracy: 0.8632 - f1_m: 1.1774 - precision_m: 1.0220 - recall_m: 1.3942
Epoch 98/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3466 - accuracy: 0.8631 - f1_m: 1.1766 - precision_m: 1.0211 - recall_m: 1.3936
Epoch 99/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3469 - accuracy: 0.8627 - f1_m: 1.1772 - precision_m: 1.0212 - recall_m: 1.3949
Epoch 100/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3461 - accuracy: 0.8627 - f1_m: 1.1783 - precision_m: 1.0224 - recall_m: 1.3960
2658/2658 [==============================] - 3s 936us/step
2658/2658 [==============================] - 3s 1ms/step - loss: 0.4125 - accuracy: 0.8491 - f1_m: 1.1640 - precision_m: 1.0130 - recall_m: 1.3882
score on test: 0.8490850329399109
5395/5395 [==============================] - 7s 1ms/step - loss: 0.3348 - accuracy: 0.8670 - f1_m: 1.1652 - precision_m: 1.0165 - recall_m: 1.3862
score on train: 0.8670393228530884
In [ ]:
fig, c_ax = plt.subplots(1,1, figsize = (12, 8))
from sklearn.preprocessing import LabelBinarizer

# function for scoring roc auc score for multi-class
def multiclass_roc_auc_score(y_test, y_pred, average="macro"):
    lb = LabelBinarizer()
    lb.fit(y_test)
    y_test = lb.transform(y_test)
    y_pred = lb.transform(y_pred)

    for (idx, c_label) in enumerate(attack_cat):
        fpr, tpr, thresholds = roc_curve(y_test[:,idx].astype(int), y_pred[:,idx])
        c_ax.plot(fpr, tpr, label = '%s (AUC:%0.2f)'  % (c_label, auc(fpr, tpr)))
    c_ax.plot(fpr, fpr, 'b-', label = 'Random Guessing')
    return roc_auc_score(y_test, y_pred, average=average)


print('ROC AUC score:', multiclass_roc_auc_score(y_multi_test, y_pred))

c_ax.legend()
c_ax.set_xlabel('False Positive Rate')
c_ax.set_ylabel('True Positive Rate')
plt.show()
ROC AUC score: 0.7597874611698036

Noise range 1

In [ ]:
noise2 = 2
X_train_mod2 = modify_dataset(X_train, variables_to_poison, noise2)

X_train_mod2
Out[ ]:
array([[ 1.79214449, -0.2082886 , -3.05107026, ...,  1.45449919,
        -1.42868768, -0.12070382],
       [-0.57638416,  1.78686151,  0.96697031, ..., -1.80676416,
        -1.94982839, -0.12070382],
       [-1.0569863 , -0.20828827, -3.08962164, ...,  1.63067824,
         6.19664455, -0.12070382],
       ...,
       [-0.47187522, -0.06694436, -3.69772927, ..., -1.34439782,
        -0.73376123, -0.12070382],
       [-0.1666061 , -0.18783648,  0.39679066, ...,  2.3451629 ,
        -0.88685302, -0.12070382],
       [-0.6757627 , -0.20011705,  0.5396698 , ..., -1.54171135,
        -0.79964479, -0.12070382]])
In [ ]:
from sklearn import metrics
from sklearn.metrics import (confusion_matrix, accuracy_score, precision_score, recall_score, f1_score)
lr1=LogisticRegression()
lr1.fit(X_train_mod2, y_train)
y_pred = lr1.predict(X_test)
print("score on test: " + str(lr1.score(X_test, y_test)))
print("score on train: "+ str(lr1.score(X_train_mod2, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_log['2']=acc
/usr/local/lib/python3.10/dist-packages/sklearn/utils/validation.py:1143: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)
/usr/local/lib/python3.10/dist-packages/sklearn/linear_model/_logistic.py:458: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
    https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
  n_iter_i = _check_optimize_result(
score on test: 0.891776826457167
score on train: 0.8915483983085211
              precision    recall  f1-score   support

           0       0.93      0.75      0.83     30772
           1       0.87      0.97      0.92     54256

    accuracy                           0.89     85028
   macro avg       0.90      0.86      0.88     85028
weighted avg       0.90      0.89      0.89     85028

In [ ]:
# ROC curve and AUC
lr1_predproba = lr1.predict_proba(X_test)[:, 1]
AUC_lr1 = roc_auc_score(y_test, lr1_predproba)
print(f'AUC: {AUC_lr1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, lr1_predproba)
plt.plot(fpr, tpr, label='logistic regression Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9547
In [ ]:
rf1 = RandomForestClassifier(n_estimators=30, max_depth=10)
rf1.fit(X_train_mod2, y_train)
y_pred = rf1.predict(X_test)
print("score on test: " + str(rf1.score(X_test, y_test)))
print("score on train: "+ str(rf1.score(X_train_mod2, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_rf_b['2']=acc
<ipython-input-28-7c4992ce0511>:2: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().
  rf1.fit(X_train_mod2, y_train)
score on test: 0.9503222467892929
score on train: 0.9509818687366043
              precision    recall  f1-score   support

           0       0.95      0.91      0.93     30772
           1       0.95      0.97      0.96     54256

    accuracy                           0.95     85028
   macro avg       0.95      0.94      0.95     85028
weighted avg       0.95      0.95      0.95     85028

In [ ]:
rf1_predproba = rf1.predict_proba(X_test)[:, 1]
AUC_rf1 = roc_auc_score(y_test, rf1_predproba)
print(f'AUC: {AUC_rf1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, rf1_predproba)
plt.plot(fpr, tpr, label='random forest Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9876
In [ ]:
xgb1 = xgb.XGBClassifier(objective="binary:logistic", random_state=42)
xgb1.fit(X_train_mod2, y_train)
y_pred = xgb1.predict(X_test)
print("score on test: " + str(xgb1.score(X_test, y_test)))
print("score on train: "+ str(xgb1.score(X_train_mod2, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_xgb_b['2']=acc
score on test: 0.9686926659453357
score on train: 0.9923420031280774
              precision    recall  f1-score   support

           0       0.97      0.95      0.96     30772
           1       0.97      0.98      0.98     54256

    accuracy                           0.97     85028
   macro avg       0.97      0.96      0.97     85028
weighted avg       0.97      0.97      0.97     85028

In [ ]:
# ROC curve and AUC
xgb1_predproba = xgb1.predict_proba(X_test)[:, 1]
AUC_xgb1 = roc_auc_score(y_test, xgb1_predproba)
print(f'AUC: {AUC_xgb1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, xgb1_predproba)
plt.plot(fpr, tpr, label='Gradient boosting Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9960
In [ ]:
model=models.Sequential()
model.add(layers.Dense(128,activation='relu',input_shape=(42,)))
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(1,activation='sigmoid'))
model.summary

model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy', f1_m, precision_m, recall_m])

earlystopping = callbacks.EarlyStopping(monitor="loss",
                                        mode="min", patience=5,
                                        restore_best_weights=True)
model.fit(X_train_mod2, y_train, batch_size=128, epochs=100, callbacks=[earlystopping])

y_pred = model.predict(X_test)
print("score on test: " + str(model.evaluate(X_test,y_test)[1]))
print("score on train: "+ str(model.evaluate(X_train_mod2,y_train)[1]))
loss, accuracy, f1_score, precision, recall = model.evaluate(X_test, y_test, verbose=0)
scores = model.evaluate(X_test, y_test, verbose=0)
res_nn_b['2']=scores[1]
from sklearn import metrics
y_pred_mat = y_pred.round()
confusion_matrix = metrics.confusion_matrix(y_test, y_pred_mat)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
Epoch 1/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.2267 - accuracy: 0.8973 - f1_m: 0.9220 - precision_m: 0.8944 - recall_m: 0.9531
Epoch 2/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1778 - accuracy: 0.9187 - f1_m: 0.9370 - precision_m: 0.9247 - recall_m: 0.9506
Epoch 3/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1558 - accuracy: 0.9280 - f1_m: 0.9437 - precision_m: 0.9375 - recall_m: 0.9508
Epoch 4/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1423 - accuracy: 0.9350 - f1_m: 0.9489 - precision_m: 0.9475 - recall_m: 0.9512
Epoch 5/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.1309 - accuracy: 0.9407 - f1_m: 0.9534 - precision_m: 0.9533 - recall_m: 0.9543
Epoch 6/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1121 - accuracy: 0.9512 - f1_m: 0.9616 - precision_m: 0.9615 - recall_m: 0.9623
Epoch 7/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0985 - accuracy: 0.9582 - f1_m: 0.9671 - precision_m: 0.9670 - recall_m: 0.9676
Epoch 8/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0915 - accuracy: 0.9614 - f1_m: 0.9696 - precision_m: 0.9699 - recall_m: 0.9698
Epoch 9/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0867 - accuracy: 0.9637 - f1_m: 0.9714 - precision_m: 0.9717 - recall_m: 0.9715
Epoch 10/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0831 - accuracy: 0.9654 - f1_m: 0.9728 - precision_m: 0.9736 - recall_m: 0.9724
Epoch 11/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0813 - accuracy: 0.9662 - f1_m: 0.9734 - precision_m: 0.9742 - recall_m: 0.9729
Epoch 12/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0791 - accuracy: 0.9669 - f1_m: 0.9739 - precision_m: 0.9750 - recall_m: 0.9732
Epoch 13/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0773 - accuracy: 0.9673 - f1_m: 0.9742 - precision_m: 0.9757 - recall_m: 0.9731
Epoch 14/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0764 - accuracy: 0.9677 - f1_m: 0.9746 - precision_m: 0.9760 - recall_m: 0.9735
Epoch 15/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0741 - accuracy: 0.9694 - f1_m: 0.9759 - precision_m: 0.9773 - recall_m: 0.9748
Epoch 16/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0728 - accuracy: 0.9698 - f1_m: 0.9762 - precision_m: 0.9779 - recall_m: 0.9748
Epoch 17/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0720 - accuracy: 0.9699 - f1_m: 0.9763 - precision_m: 0.9780 - recall_m: 0.9748
Epoch 18/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0711 - accuracy: 0.9705 - f1_m: 0.9767 - precision_m: 0.9787 - recall_m: 0.9750
Epoch 19/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0698 - accuracy: 0.9708 - f1_m: 0.9769 - precision_m: 0.9789 - recall_m: 0.9753
Epoch 20/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0697 - accuracy: 0.9708 - f1_m: 0.9770 - precision_m: 0.9791 - recall_m: 0.9753
Epoch 21/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0682 - accuracy: 0.9714 - f1_m: 0.9775 - precision_m: 0.9797 - recall_m: 0.9755
Epoch 22/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0671 - accuracy: 0.9721 - f1_m: 0.9780 - precision_m: 0.9803 - recall_m: 0.9760
Epoch 23/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0667 - accuracy: 0.9718 - f1_m: 0.9778 - precision_m: 0.9797 - recall_m: 0.9762
Epoch 24/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0658 - accuracy: 0.9730 - f1_m: 0.9787 - precision_m: 0.9808 - recall_m: 0.9768
Epoch 25/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0642 - accuracy: 0.9731 - f1_m: 0.9788 - precision_m: 0.9811 - recall_m: 0.9769
Epoch 26/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0640 - accuracy: 0.9732 - f1_m: 0.9788 - precision_m: 0.9812 - recall_m: 0.9767
Epoch 27/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0649 - accuracy: 0.9731 - f1_m: 0.9788 - precision_m: 0.9810 - recall_m: 0.9769
Epoch 28/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0625 - accuracy: 0.9739 - f1_m: 0.9794 - precision_m: 0.9818 - recall_m: 0.9772
Epoch 29/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0619 - accuracy: 0.9743 - f1_m: 0.9797 - precision_m: 0.9821 - recall_m: 0.9777
Epoch 30/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0624 - accuracy: 0.9741 - f1_m: 0.9795 - precision_m: 0.9818 - recall_m: 0.9775
Epoch 31/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0610 - accuracy: 0.9744 - f1_m: 0.9799 - precision_m: 0.9821 - recall_m: 0.9779
Epoch 32/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0601 - accuracy: 0.9750 - f1_m: 0.9803 - precision_m: 0.9829 - recall_m: 0.9780
Epoch 33/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0600 - accuracy: 0.9748 - f1_m: 0.9801 - precision_m: 0.9823 - recall_m: 0.9782
Epoch 34/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0596 - accuracy: 0.9751 - f1_m: 0.9804 - precision_m: 0.9828 - recall_m: 0.9783
Epoch 35/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0588 - accuracy: 0.9752 - f1_m: 0.9804 - precision_m: 0.9830 - recall_m: 0.9781
Epoch 36/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0579 - accuracy: 0.9758 - f1_m: 0.9810 - precision_m: 0.9835 - recall_m: 0.9787
Epoch 37/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0582 - accuracy: 0.9761 - f1_m: 0.9812 - precision_m: 0.9835 - recall_m: 0.9791
Epoch 38/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0568 - accuracy: 0.9762 - f1_m: 0.9813 - precision_m: 0.9837 - recall_m: 0.9791
Epoch 39/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0568 - accuracy: 0.9767 - f1_m: 0.9816 - precision_m: 0.9841 - recall_m: 0.9795
Epoch 40/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0554 - accuracy: 0.9768 - f1_m: 0.9817 - precision_m: 0.9844 - recall_m: 0.9793
Epoch 41/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0562 - accuracy: 0.9764 - f1_m: 0.9814 - precision_m: 0.9838 - recall_m: 0.9793
Epoch 42/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0552 - accuracy: 0.9768 - f1_m: 0.9818 - precision_m: 0.9840 - recall_m: 0.9798
Epoch 43/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0547 - accuracy: 0.9770 - f1_m: 0.9819 - precision_m: 0.9844 - recall_m: 0.9796
Epoch 44/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0537 - accuracy: 0.9778 - f1_m: 0.9825 - precision_m: 0.9848 - recall_m: 0.9804
Epoch 45/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0540 - accuracy: 0.9776 - f1_m: 0.9823 - precision_m: 0.9849 - recall_m: 0.9800
Epoch 46/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0526 - accuracy: 0.9779 - f1_m: 0.9826 - precision_m: 0.9850 - recall_m: 0.9805
Epoch 47/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0528 - accuracy: 0.9781 - f1_m: 0.9827 - precision_m: 0.9851 - recall_m: 0.9806
Epoch 48/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0524 - accuracy: 0.9783 - f1_m: 0.9829 - precision_m: 0.9851 - recall_m: 0.9810
Epoch 49/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0518 - accuracy: 0.9784 - f1_m: 0.9830 - precision_m: 0.9852 - recall_m: 0.9811
Epoch 50/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0517 - accuracy: 0.9785 - f1_m: 0.9830 - precision_m: 0.9853 - recall_m: 0.9811
Epoch 51/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0516 - accuracy: 0.9781 - f1_m: 0.9827 - precision_m: 0.9851 - recall_m: 0.9806
Epoch 52/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0510 - accuracy: 0.9789 - f1_m: 0.9834 - precision_m: 0.9857 - recall_m: 0.9813
Epoch 53/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0504 - accuracy: 0.9790 - f1_m: 0.9835 - precision_m: 0.9856 - recall_m: 0.9816
Epoch 54/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0503 - accuracy: 0.9789 - f1_m: 0.9834 - precision_m: 0.9857 - recall_m: 0.9812
Epoch 55/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0500 - accuracy: 0.9793 - f1_m: 0.9836 - precision_m: 0.9861 - recall_m: 0.9814
Epoch 56/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0493 - accuracy: 0.9793 - f1_m: 0.9837 - precision_m: 0.9861 - recall_m: 0.9817
Epoch 57/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0488 - accuracy: 0.9796 - f1_m: 0.9839 - precision_m: 0.9861 - recall_m: 0.9820
Epoch 58/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0491 - accuracy: 0.9799 - f1_m: 0.9842 - precision_m: 0.9862 - recall_m: 0.9824
Epoch 59/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0483 - accuracy: 0.9797 - f1_m: 0.9840 - precision_m: 0.9863 - recall_m: 0.9819
Epoch 60/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0477 - accuracy: 0.9801 - f1_m: 0.9843 - precision_m: 0.9864 - recall_m: 0.9825
Epoch 61/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0474 - accuracy: 0.9803 - f1_m: 0.9845 - precision_m: 0.9866 - recall_m: 0.9825
Epoch 62/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0466 - accuracy: 0.9805 - f1_m: 0.9846 - precision_m: 0.9868 - recall_m: 0.9827
Epoch 63/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0471 - accuracy: 0.9803 - f1_m: 0.9845 - precision_m: 0.9865 - recall_m: 0.9827
Epoch 64/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0461 - accuracy: 0.9810 - f1_m: 0.9850 - precision_m: 0.9874 - recall_m: 0.9828
Epoch 65/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0462 - accuracy: 0.9808 - f1_m: 0.9849 - precision_m: 0.9870 - recall_m: 0.9830
Epoch 66/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0460 - accuracy: 0.9805 - f1_m: 0.9847 - precision_m: 0.9868 - recall_m: 0.9828
Epoch 67/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0452 - accuracy: 0.9811 - f1_m: 0.9851 - precision_m: 0.9873 - recall_m: 0.9831
Epoch 68/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0461 - accuracy: 0.9811 - f1_m: 0.9851 - precision_m: 0.9873 - recall_m: 0.9830
Epoch 69/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0438 - accuracy: 0.9819 - f1_m: 0.9858 - precision_m: 0.9879 - recall_m: 0.9838
Epoch 70/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0445 - accuracy: 0.9817 - f1_m: 0.9856 - precision_m: 0.9876 - recall_m: 0.9838
Epoch 71/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0447 - accuracy: 0.9813 - f1_m: 0.9853 - precision_m: 0.9876 - recall_m: 0.9832
Epoch 72/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0441 - accuracy: 0.9815 - f1_m: 0.9854 - precision_m: 0.9877 - recall_m: 0.9833
Epoch 73/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0424 - accuracy: 0.9822 - f1_m: 0.9860 - precision_m: 0.9883 - recall_m: 0.9839
Epoch 74/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0435 - accuracy: 0.9822 - f1_m: 0.9859 - precision_m: 0.9877 - recall_m: 0.9843
Epoch 75/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0424 - accuracy: 0.9824 - f1_m: 0.9861 - precision_m: 0.9883 - recall_m: 0.9842
Epoch 76/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0435 - accuracy: 0.9822 - f1_m: 0.9860 - precision_m: 0.9882 - recall_m: 0.9840
Epoch 77/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0422 - accuracy: 0.9826 - f1_m: 0.9863 - precision_m: 0.9884 - recall_m: 0.9843
Epoch 78/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0415 - accuracy: 0.9829 - f1_m: 0.9865 - precision_m: 0.9885 - recall_m: 0.9847
Epoch 79/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0413 - accuracy: 0.9829 - f1_m: 0.9865 - precision_m: 0.9885 - recall_m: 0.9847
Epoch 80/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0411 - accuracy: 0.9833 - f1_m: 0.9868 - precision_m: 0.9888 - recall_m: 0.9850
Epoch 81/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0411 - accuracy: 0.9834 - f1_m: 0.9869 - precision_m: 0.9890 - recall_m: 0.9850
Epoch 82/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0407 - accuracy: 0.9834 - f1_m: 0.9869 - precision_m: 0.9889 - recall_m: 0.9850
Epoch 83/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0409 - accuracy: 0.9830 - f1_m: 0.9866 - precision_m: 0.9887 - recall_m: 0.9847
Epoch 84/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0397 - accuracy: 0.9834 - f1_m: 0.9869 - precision_m: 0.9890 - recall_m: 0.9849
Epoch 85/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0394 - accuracy: 0.9834 - f1_m: 0.9869 - precision_m: 0.9890 - recall_m: 0.9850
Epoch 86/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0393 - accuracy: 0.9839 - f1_m: 0.9873 - precision_m: 0.9893 - recall_m: 0.9855
Epoch 87/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0397 - accuracy: 0.9834 - f1_m: 0.9869 - precision_m: 0.9890 - recall_m: 0.9851
Epoch 88/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0408 - accuracy: 0.9836 - f1_m: 0.9871 - precision_m: 0.9890 - recall_m: 0.9853
Epoch 89/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0389 - accuracy: 0.9837 - f1_m: 0.9872 - precision_m: 0.9891 - recall_m: 0.9854
Epoch 90/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0376 - accuracy: 0.9846 - f1_m: 0.9879 - precision_m: 0.9898 - recall_m: 0.9861
Epoch 91/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0385 - accuracy: 0.9838 - f1_m: 0.9873 - precision_m: 0.9891 - recall_m: 0.9856
Epoch 92/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0379 - accuracy: 0.9842 - f1_m: 0.9875 - precision_m: 0.9895 - recall_m: 0.9858
Epoch 93/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0383 - accuracy: 0.9842 - f1_m: 0.9875 - precision_m: 0.9895 - recall_m: 0.9857
Epoch 94/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0372 - accuracy: 0.9847 - f1_m: 0.9880 - precision_m: 0.9900 - recall_m: 0.9861
Epoch 95/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0381 - accuracy: 0.9843 - f1_m: 0.9876 - precision_m: 0.9894 - recall_m: 0.9860
Epoch 96/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0374 - accuracy: 0.9848 - f1_m: 0.9880 - precision_m: 0.9900 - recall_m: 0.9862
Epoch 97/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0368 - accuracy: 0.9849 - f1_m: 0.9881 - precision_m: 0.9900 - recall_m: 0.9864
Epoch 98/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0379 - accuracy: 0.9844 - f1_m: 0.9877 - precision_m: 0.9893 - recall_m: 0.9863
Epoch 99/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0363 - accuracy: 0.9851 - f1_m: 0.9883 - precision_m: 0.9901 - recall_m: 0.9866
Epoch 100/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0371 - accuracy: 0.9846 - f1_m: 0.9879 - precision_m: 0.9899 - recall_m: 0.9860
2658/2658 [==============================] - 3s 939us/step
2658/2658 [==============================] - 3s 1ms/step - loss: 0.0822 - accuracy: 0.9730 - f1_m: 0.9783 - precision_m: 0.9840 - recall_m: 0.9737
score on test: 0.9730324149131775
5395/5395 [==============================] - 6s 1ms/step - loss: 0.0346 - accuracy: 0.9867 - f1_m: 0.9893 - precision_m: 0.9929 - recall_m: 0.9863
score on train: 0.9866709113121033
In [ ]:
from sklearn.metrics import auc
fpr_keras, tpr_keras, thresholds_keras = roc_curve(y_test, y_pred)
auc_keras = auc(fpr_keras, tpr_keras)
plt.plot([0, 1], [0, 1], 'k--')
plt.plot(fpr_keras, tpr_keras, label='Keras (area = {:.3f})'.format(auc_keras))
plt.xlabel('False positive rate')
plt.ylabel('True positive rate')
plt.title('ROC curve')
plt.legend(loc='best')
plt.show()
In [ ]:
dtree1 = DecisionTreeClassifier(max_depth = 10).fit(X_train_mod2, y_multi_train)
y_pred = dtree1.predict(X_test)
print("score on test: " + str(dtree1.score(X_test, y_multi_test)))
print("score on train: "+ str(dtree1.score(X_train_mod2, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_tree['2']=acc
score on test: 0.8045114550501011
score on train: 0.8270752476394602
              precision    recall  f1-score   support

           0       0.90      0.93      0.92     30772
           1       0.96      0.96      0.96     19423
           2       0.60      0.82      0.69     14709
           3       0.68      0.59      0.63      7921
           4       0.42      0.15      0.22      5357
           5       0.72      0.72      0.72      4578
           6       0.65      0.02      0.04       909
           7       0.16      0.02      0.03       780
           8       0.00      0.00      0.00       513
           9       0.00      0.00      0.00        66

    accuracy                           0.80     85028
   macro avg       0.51      0.42      0.42     85028
weighted avg       0.79      0.80      0.78     85028

/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
In [ ]:
plot_ROC_curve(dtree1, X_train_mod2, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for DecisionTreeClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=DecisionTreeClassifier(max_depth=10))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for DecisionTreeClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=DecisionTreeClassifier(max_depth=10))
DecisionTreeClassifier(max_depth=10)
DecisionTreeClassifier(max_depth=10)
In [ ]:
rf2 = RandomForestClassifier(n_estimators=30, max_depth=10).fit(X_train_mod2, y_multi_train)
y_pred = rf2.predict(X_test)
print("score on test: " + str(rf2.score(X_test, y_multi_test)))
print("score on train: "+ str(rf2.score(X_train_mod2, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
accuracy = rf2.score(X_test, y_multi_test)
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_rf_m['2']=acc
<ipython-input-36-63dc6513c11b>:1: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().
  rf2 = RandomForestClassifier(n_estimators=30, max_depth=10).fit(X_train_mod2, y_multi_train)
score on test: 0.7980900409276944
score on train: 0.815958987429763
              precision    recall  f1-score   support

           0       0.84      0.96      0.90     30772
           1       1.00      0.97      0.98     19423
           2       0.57      0.89      0.69     14709
           3       0.75      0.44      0.55      7921
           4       0.45      0.01      0.03      5357
           5       0.90      0.63      0.74      4578
           6       0.00      0.00      0.00       909
           7       1.00      0.00      0.01       780
           8       0.00      0.00      0.00       513
           9       0.00      0.00      0.00        66

    accuracy                           0.80     85028
   macro avg       0.55      0.39      0.39     85028
weighted avg       0.79      0.80      0.76     85028

/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
In [ ]:
plot_ROC_curve(rf2, X_train_mod2, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for RandomForestClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=RandomForestClassifier(max_depth=10, n_estimators=30))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for RandomForestClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=RandomForestClassifier(max_depth=10, n_estimators=30))
RandomForestClassifier(max_depth=10, n_estimators=30)
RandomForestClassifier(max_depth=10, n_estimators=30)
In [ ]:
xgb2 = xgb.XGBClassifier(objective="multi:softprob", random_state=42)
xgb2.fit(X_train_mod2, y_multi_train)
y_pred = xgb2.predict(X_test)
print("score on test: " + str(xgb2.score(X_test, y_multi_test)))
print("score on train: "+ str(xgb2.score(X_train_mod2, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_xgb_m['2']=acc
score on test: 0.8517194335983441
score on train: 0.9090772171696693
              precision    recall  f1-score   support

           0       0.95      0.98      0.96     30772
           1       1.00      0.98      0.99     19423
           2       0.73      0.71      0.72     14709
           3       0.79      0.79      0.79      7921
           4       0.38      0.52      0.44      5357
           5       0.90      0.76      0.82      4578
           6       0.63      0.11      0.19       909
           7       0.51      0.08      0.14       780
           8       0.62      0.38      0.47       513
           9       0.70      0.11      0.18        66

    accuracy                           0.85     85028
   macro avg       0.72      0.54      0.57     85028
weighted avg       0.86      0.85      0.85     85028

In [ ]:
plot_ROC_curve(xgb2, X_train_mod2, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for XGBClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=XGBClassifier(base_score=None, booster=None, callbacks=None,
                               colsample_bylevel=None, colsample_bynode=None,
                               colsample_bytree=None,
                               early_stopping_rounds=None,
                               enable_categorical=False, eval_metric=None,
                               feature_types=None, gamma=None, g...
                               grow_policy=None, importance_type=None,
                               interaction_constraints=None, learning_rate=None,
                               max_bin=None, max_cat_threshold=None,
                               max_cat_to_onehot=None, max_delta_step=None,
                               max_depth=None, max_leaves=None,
                               min_child_weight=None, missing=nan,
                               monotone_constraints=None, n_estimators=100,
                               n_jobs=None, num_parallel_tree=None,
                               objective='multi:softprob', predictor=None, ...))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for XGBClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=XGBClassifier(base_score=None, booster=None, callbacks=None,
                               colsample_bylevel=None, colsample_bynode=None,
                               colsample_bytree=None,
                               early_stopping_rounds=None,
                               enable_categorical=False, eval_metric=None,
                               feature_types=None, gamma=None, g...
                               grow_policy=None, importance_type=None,
                               interaction_constraints=None, learning_rate=None,
                               max_bin=None, max_cat_threshold=None,
                               max_cat_to_onehot=None, max_delta_step=None,
                               max_depth=None, max_leaves=None,
                               min_child_weight=None, missing=nan,
                               monotone_constraints=None, n_estimators=100,
                               n_jobs=None, num_parallel_tree=None,
                               objective='multi:softprob', predictor=None, ...))
XGBClassifier(base_score=None, booster=None, callbacks=None,
              colsample_bylevel=None, colsample_bynode=None,
              colsample_bytree=None, early_stopping_rounds=None,
              enable_categorical=False, eval_metric=None, feature_types=None,
              gamma=None, gpu_id=None, grow_policy=None, importance_type=None,
              interaction_constraints=None, learning_rate=None, max_bin=None,
              max_cat_threshold=None, max_cat_to_onehot=None,
              max_delta_step=None, max_depth=None, max_leaves=None,
              min_child_weight=None, missing=nan, monotone_constraints=None,
              n_estimators=100, n_jobs=None, num_parallel_tree=None,
              objective='multi:softprob', predictor=None, ...)
XGBClassifier(base_score=None, booster=None, callbacks=None,
              colsample_bylevel=None, colsample_bynode=None,
              colsample_bytree=None, early_stopping_rounds=None,
              enable_categorical=False, eval_metric=None, feature_types=None,
              gamma=None, gpu_id=None, grow_policy=None, importance_type=None,
              interaction_constraints=None, learning_rate=None, max_bin=None,
              max_cat_threshold=None, max_cat_to_onehot=None,
              max_delta_step=None, max_depth=None, max_leaves=None,
              min_child_weight=None, missing=nan, monotone_constraints=None,
              n_estimators=100, n_jobs=None, num_parallel_tree=None,
              objective='multi:softprob', predictor=None, ...)
In [ ]:
model2 = models.Sequential()
model2.add(layers.Dense(128, input_shape = (42,), activation = "relu"))
model2.add(layers.Dense(64, activation = "relu"))
model2.add(layers.Dense(64,activation="relu"))
model2.add(layers.Dense(10, activation = "softmax"))
model2.compile(optimizer='adam', loss="sparse_categorical_crossentropy", metrics = ["accuracy", f1_m, precision_m, recall_m])
model2.summary()

earlystopping = callbacks.EarlyStopping(monitor="loss",
                                        mode="min", patience=5,
                                        restore_best_weights=True)

model2.fit(X_train_mod2,y_multi_train,epochs=100,batch_size=128,callbacks=[earlystopping])
y_pred_arr = model2.predict(X_test)
y_pred = []
for el in y_pred_arr:
    ind = np.argmax(el)
    y_pred.append(ind)
scores=model2.evaluate(X_test, y_multi_test, verbose=0)
res_nn_m['2']=scores[1]
print("score on test: " + str(model2.evaluate(X_test,y_multi_test)[1]))
print("score on train: "+ str(model2.evaluate(X_train_mod2,y_multi_train)[1]))
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
Model: "sequential_3"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense_12 (Dense)            (None, 128)               5504      
                                                                 
 dense_13 (Dense)            (None, 64)                8256      
                                                                 
 dense_14 (Dense)            (None, 64)                4160      
                                                                 
 dense_15 (Dense)            (None, 10)                650       
                                                                 
=================================================================
Total params: 18,570
Trainable params: 18,570
Non-trainable params: 0
_________________________________________________________________
Epoch 1/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.8160 - accuracy: 0.7022 - f1_m: 1.6790 - precision_m: 6234247.0000 - recall_m: 1.6774
Epoch 2/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.6323 - accuracy: 0.7648 - f1_m: 1.4841 - precision_m: 1.3890 - recall_m: 1.6025
Epoch 3/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5773 - accuracy: 0.7847 - f1_m: 1.4074 - precision_m: 1.2883 - recall_m: 1.5583
Epoch 4/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5463 - accuracy: 0.7942 - f1_m: 1.3593 - precision_m: 1.2322 - recall_m: 1.5229
Epoch 5/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5285 - accuracy: 0.8002 - f1_m: 1.3384 - precision_m: 1.2070 - recall_m: 1.5087
Epoch 6/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5141 - accuracy: 0.8053 - f1_m: 1.3175 - precision_m: 1.1821 - recall_m: 1.4943
Epoch 7/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5022 - accuracy: 0.8097 - f1_m: 1.3033 - precision_m: 1.1652 - recall_m: 1.4848
Epoch 8/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4882 - accuracy: 0.8153 - f1_m: 1.2896 - precision_m: 1.1487 - recall_m: 1.4760
Epoch 9/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4722 - accuracy: 0.8223 - f1_m: 1.2724 - precision_m: 1.1296 - recall_m: 1.4626
Epoch 10/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4592 - accuracy: 0.8272 - f1_m: 1.2596 - precision_m: 1.1158 - recall_m: 1.4517
Epoch 11/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4517 - accuracy: 0.8292 - f1_m: 1.2536 - precision_m: 1.1101 - recall_m: 1.4463
Epoch 12/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4439 - accuracy: 0.8319 - f1_m: 1.2471 - precision_m: 1.1017 - recall_m: 1.4431
Epoch 13/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4398 - accuracy: 0.8336 - f1_m: 1.2463 - precision_m: 1.1009 - recall_m: 1.4422
Epoch 14/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4361 - accuracy: 0.8344 - f1_m: 1.2411 - precision_m: 1.0952 - recall_m: 1.4382
Epoch 15/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4322 - accuracy: 0.8350 - f1_m: 1.2392 - precision_m: 1.0927 - recall_m: 1.4371
Epoch 16/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4281 - accuracy: 0.8361 - f1_m: 1.2350 - precision_m: 1.0878 - recall_m: 1.4344
Epoch 17/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4259 - accuracy: 0.8371 - f1_m: 1.2340 - precision_m: 1.0869 - recall_m: 1.4332
Epoch 18/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4223 - accuracy: 0.8381 - f1_m: 1.2313 - precision_m: 1.0841 - recall_m: 1.4307
Epoch 19/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4187 - accuracy: 0.8394 - f1_m: 1.2321 - precision_m: 1.0843 - recall_m: 1.4330
Epoch 20/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4174 - accuracy: 0.8398 - f1_m: 1.2298 - precision_m: 1.0812 - recall_m: 1.4319
Epoch 21/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4138 - accuracy: 0.8409 - f1_m: 1.2278 - precision_m: 1.0797 - recall_m: 1.4294
Epoch 22/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4136 - accuracy: 0.8416 - f1_m: 1.2258 - precision_m: 1.0772 - recall_m: 1.4280
Epoch 23/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4109 - accuracy: 0.8414 - f1_m: 1.2235 - precision_m: 1.0742 - recall_m: 1.4269
Epoch 24/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4082 - accuracy: 0.8425 - f1_m: 1.2246 - precision_m: 1.0761 - recall_m: 1.4266
Epoch 25/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4065 - accuracy: 0.8434 - f1_m: 1.2232 - precision_m: 1.0744 - recall_m: 1.4259
Epoch 26/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4053 - accuracy: 0.8436 - f1_m: 1.2226 - precision_m: 1.0736 - recall_m: 1.4256
Epoch 27/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4027 - accuracy: 0.8447 - f1_m: 1.2202 - precision_m: 1.0709 - recall_m: 1.4237
Epoch 28/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4023 - accuracy: 0.8446 - f1_m: 1.2183 - precision_m: 1.0684 - recall_m: 1.4230
Epoch 29/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4009 - accuracy: 0.8449 - f1_m: 1.2179 - precision_m: 1.0686 - recall_m: 1.4210
Epoch 30/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3997 - accuracy: 0.8459 - f1_m: 1.2187 - precision_m: 1.0695 - recall_m: 1.4220
Epoch 31/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3973 - accuracy: 0.8468 - f1_m: 1.2156 - precision_m: 1.0653 - recall_m: 1.4212
Epoch 32/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3969 - accuracy: 0.8466 - f1_m: 1.2151 - precision_m: 1.0652 - recall_m: 1.4196
Epoch 33/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3957 - accuracy: 0.8477 - f1_m: 1.2130 - precision_m: 1.0625 - recall_m: 1.4189
Epoch 34/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3939 - accuracy: 0.8475 - f1_m: 1.2130 - precision_m: 1.0621 - recall_m: 1.4198
Epoch 35/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3924 - accuracy: 0.8480 - f1_m: 1.2131 - precision_m: 1.0624 - recall_m: 1.4196
Epoch 36/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3926 - accuracy: 0.8482 - f1_m: 1.2113 - precision_m: 1.0598 - recall_m: 1.4190
Epoch 37/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3896 - accuracy: 0.8483 - f1_m: 1.2107 - precision_m: 1.0597 - recall_m: 1.4177
Epoch 38/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3898 - accuracy: 0.8488 - f1_m: 1.2080 - precision_m: 1.0561 - recall_m: 1.4164
Epoch 39/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3881 - accuracy: 0.8493 - f1_m: 1.2100 - precision_m: 1.0591 - recall_m: 1.4169
Epoch 40/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3869 - accuracy: 0.8495 - f1_m: 1.2084 - precision_m: 1.0571 - recall_m: 1.4162
Epoch 41/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3853 - accuracy: 0.8498 - f1_m: 1.2088 - precision_m: 1.0571 - recall_m: 1.4169
Epoch 42/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3852 - accuracy: 0.8501 - f1_m: 1.2070 - precision_m: 1.0558 - recall_m: 1.4149
Epoch 43/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3841 - accuracy: 0.8502 - f1_m: 1.2048 - precision_m: 1.0538 - recall_m: 1.4124
Epoch 44/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3834 - accuracy: 0.8512 - f1_m: 1.2071 - precision_m: 1.0556 - recall_m: 1.4151
Epoch 45/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3826 - accuracy: 0.8516 - f1_m: 1.2041 - precision_m: 1.0521 - recall_m: 1.4133
Epoch 46/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3811 - accuracy: 0.8513 - f1_m: 1.2054 - precision_m: 1.0536 - recall_m: 1.4139
Epoch 47/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3797 - accuracy: 0.8523 - f1_m: 1.2033 - precision_m: 1.0515 - recall_m: 1.4120
Epoch 48/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3796 - accuracy: 0.8521 - f1_m: 1.2025 - precision_m: 1.0507 - recall_m: 1.4116
Epoch 49/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3780 - accuracy: 0.8526 - f1_m: 1.2024 - precision_m: 1.0508 - recall_m: 1.4109
Epoch 50/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3772 - accuracy: 0.8526 - f1_m: 1.2015 - precision_m: 1.0494 - recall_m: 1.4113
Epoch 51/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3777 - accuracy: 0.8532 - f1_m: 1.1988 - precision_m: 1.0465 - recall_m: 1.4091
Epoch 52/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3759 - accuracy: 0.8541 - f1_m: 1.1987 - precision_m: 1.0465 - recall_m: 1.4091
Epoch 53/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3763 - accuracy: 0.8536 - f1_m: 1.1985 - precision_m: 1.0460 - recall_m: 1.4088
Epoch 54/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3740 - accuracy: 0.8547 - f1_m: 1.1999 - precision_m: 1.0477 - recall_m: 1.4094
Epoch 55/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3742 - accuracy: 0.8547 - f1_m: 1.1978 - precision_m: 1.0451 - recall_m: 1.4084
Epoch 56/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3728 - accuracy: 0.8546 - f1_m: 1.1966 - precision_m: 1.0433 - recall_m: 1.4077
Epoch 57/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3725 - accuracy: 0.8547 - f1_m: 1.1981 - precision_m: 1.0463 - recall_m: 1.4075
Epoch 58/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3723 - accuracy: 0.8542 - f1_m: 1.1935 - precision_m: 1.0403 - recall_m: 1.4053
Epoch 59/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3710 - accuracy: 0.8554 - f1_m: 1.1950 - precision_m: 1.0422 - recall_m: 1.4058
Epoch 60/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3708 - accuracy: 0.8558 - f1_m: 1.1945 - precision_m: 1.0418 - recall_m: 1.4052
Epoch 61/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3700 - accuracy: 0.8553 - f1_m: 1.1954 - precision_m: 1.0433 - recall_m: 1.4057
Epoch 62/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3688 - accuracy: 0.8559 - f1_m: 1.1908 - precision_m: 1.0377 - recall_m: 1.4027
Epoch 63/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3682 - accuracy: 0.8555 - f1_m: 1.1944 - precision_m: 1.0415 - recall_m: 1.4055
Epoch 64/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3676 - accuracy: 0.8564 - f1_m: 1.1938 - precision_m: 1.0414 - recall_m: 1.4046
Epoch 65/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3670 - accuracy: 0.8562 - f1_m: 1.1934 - precision_m: 1.0404 - recall_m: 1.4050
Epoch 66/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3666 - accuracy: 0.8566 - f1_m: 1.1907 - precision_m: 1.0374 - recall_m: 1.4030
Epoch 67/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3656 - accuracy: 0.8577 - f1_m: 1.1912 - precision_m: 1.0381 - recall_m: 1.4031
Epoch 68/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3658 - accuracy: 0.8569 - f1_m: 1.1899 - precision_m: 1.0372 - recall_m: 1.4012
Epoch 69/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3648 - accuracy: 0.8573 - f1_m: 1.1896 - precision_m: 1.0361 - recall_m: 1.4020
Epoch 70/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3663 - accuracy: 0.8566 - f1_m: 1.1910 - precision_m: 1.0376 - recall_m: 1.4033
Epoch 71/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3644 - accuracy: 0.8573 - f1_m: 1.1900 - precision_m: 1.0362 - recall_m: 1.4028
Epoch 72/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3636 - accuracy: 0.8575 - f1_m: 1.1895 - precision_m: 1.0357 - recall_m: 1.4024
Epoch 73/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3630 - accuracy: 0.8574 - f1_m: 1.1904 - precision_m: 1.0374 - recall_m: 1.4021
Epoch 74/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3612 - accuracy: 0.8583 - f1_m: 1.1896 - precision_m: 1.0362 - recall_m: 1.4020
Epoch 75/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3630 - accuracy: 0.8571 - f1_m: 1.1856 - precision_m: 1.0318 - recall_m: 1.3991
Epoch 76/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3623 - accuracy: 0.8586 - f1_m: 1.1862 - precision_m: 1.0329 - recall_m: 1.3986
Epoch 77/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3608 - accuracy: 0.8582 - f1_m: 1.1876 - precision_m: 1.0340 - recall_m: 1.4003
Epoch 78/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3599 - accuracy: 0.8589 - f1_m: 1.1889 - precision_m: 1.0355 - recall_m: 1.4013
Epoch 79/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3599 - accuracy: 0.8589 - f1_m: 1.1853 - precision_m: 1.0315 - recall_m: 1.3982
Epoch 80/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3603 - accuracy: 0.8586 - f1_m: 1.1868 - precision_m: 1.0337 - recall_m: 1.3988
Epoch 81/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3581 - accuracy: 0.8587 - f1_m: 1.1846 - precision_m: 1.0305 - recall_m: 1.3985
Epoch 82/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3580 - accuracy: 0.8593 - f1_m: 1.1859 - precision_m: 1.0324 - recall_m: 1.3992
Epoch 83/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3576 - accuracy: 0.8595 - f1_m: 1.1861 - precision_m: 1.0328 - recall_m: 1.3989
Epoch 84/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3580 - accuracy: 0.8591 - f1_m: 1.1866 - precision_m: 1.0329 - recall_m: 1.3993
Epoch 85/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3573 - accuracy: 0.8594 - f1_m: 1.1828 - precision_m: 1.0285 - recall_m: 1.3970
Epoch 86/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3574 - accuracy: 0.8588 - f1_m: 1.1837 - precision_m: 1.0292 - recall_m: 1.3982
Epoch 87/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3572 - accuracy: 0.8598 - f1_m: 1.1840 - precision_m: 1.0298 - recall_m: 1.3981
Epoch 88/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3555 - accuracy: 0.8605 - f1_m: 1.1868 - precision_m: 1.0333 - recall_m: 1.3995
Epoch 89/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3554 - accuracy: 0.8591 - f1_m: 1.1847 - precision_m: 1.0309 - recall_m: 1.3980
Epoch 90/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3547 - accuracy: 0.8607 - f1_m: 1.1836 - precision_m: 1.0293 - recall_m: 1.3977
Epoch 91/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3546 - accuracy: 0.8607 - f1_m: 1.1836 - precision_m: 1.0295 - recall_m: 1.3973
Epoch 92/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3540 - accuracy: 0.8606 - f1_m: 1.1818 - precision_m: 1.0272 - recall_m: 1.3964
Epoch 93/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3537 - accuracy: 0.8603 - f1_m: 1.1843 - precision_m: 1.0301 - recall_m: 1.3979
Epoch 94/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3535 - accuracy: 0.8602 - f1_m: 1.1835 - precision_m: 1.0295 - recall_m: 1.3972
Epoch 95/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3529 - accuracy: 0.8603 - f1_m: 1.1829 - precision_m: 1.0286 - recall_m: 1.3971
Epoch 96/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3522 - accuracy: 0.8611 - f1_m: 1.1805 - precision_m: 1.0259 - recall_m: 1.3955
Epoch 97/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3526 - accuracy: 0.8607 - f1_m: 1.1811 - precision_m: 1.0271 - recall_m: 1.3949
Epoch 98/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3522 - accuracy: 0.8602 - f1_m: 1.1825 - precision_m: 1.0275 - recall_m: 1.3980
Epoch 99/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3526 - accuracy: 0.8615 - f1_m: 1.1812 - precision_m: 1.0262 - recall_m: 1.3964
Epoch 100/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3509 - accuracy: 0.8618 - f1_m: 1.1798 - precision_m: 1.0252 - recall_m: 1.3945
2658/2658 [==============================] - 2s 892us/step
2658/2658 [==============================] - 3s 1ms/step - loss: 0.4144 - accuracy: 0.8478 - f1_m: 1.2164 - precision_m: 1.0758 - recall_m: 1.4217
score on test: 0.8478148579597473
5395/5395 [==============================] - 6s 1ms/step - loss: 0.3427 - accuracy: 0.8643 - f1_m: 1.2059 - precision_m: 1.0659 - recall_m: 1.4114
score on train: 0.864287793636322
In [ ]:
fig, c_ax = plt.subplots(1,1, figsize = (12, 8))
print('ROC AUC score:', multiclass_roc_auc_score(y_multi_test, y_pred))

c_ax.legend()
c_ax.set_xlabel('False Positive Rate')
c_ax.set_ylabel('True Positive Rate')
plt.show()
ROC AUC score: 0.766777028566272

Noise range 1,5

In [ ]:
noise3 = 3
X_train_mod3 = modify_dataset(X_train, variables_to_poison, noise3)

X_train_mod3
Out[ ]:
array([[ 1.79214449, -0.2082886 ,  2.4571585 , ..., -6.83623119,
        -1.18443845, -0.12070382],
       [-0.57638416,  1.78686151,  1.12655572, ...,  1.79987319,
        -8.5542165 , -0.12070382],
       [-1.0569863 , -0.20828827, -1.44776485, ...,  1.98108405,
         7.022288  , -0.12070382],
       ...,
       [-0.47187522, -0.06694436, -0.31449456, ..., -3.62903686,
         3.60652317, -0.12070382],
       [-0.1666061 , -0.18783648, -5.31632395, ...,  2.40447373,
         3.9506843 , -0.12070382],
       [-0.6757627 , -0.20011705, -0.42302625, ..., -2.41982954,
         4.91014323, -0.12070382]])
In [ ]:
from sklearn import metrics
from sklearn.metrics import (confusion_matrix, accuracy_score, precision_score, recall_score, f1_score)
lr1=LogisticRegression()
lr1.fit(X_train_mod3, y_train)
y_pred = lr1.predict(X_test)
print("score on test: " + str(lr1.score(X_test, y_test)))
print("score on train: "+ str(lr1.score(X_train_mod3, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_log['3']=acc
/usr/local/lib/python3.10/dist-packages/sklearn/utils/validation.py:1143: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)
/usr/local/lib/python3.10/dist-packages/sklearn/linear_model/_logistic.py:458: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
    https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
  n_iter_i = _check_optimize_result(
score on test: 0.8926353671731665
score on train: 0.8934773793662747
              precision    recall  f1-score   support

           0       0.93      0.76      0.84     30772
           1       0.88      0.97      0.92     54256

    accuracy                           0.89     85028
   macro avg       0.90      0.86      0.88     85028
weighted avg       0.90      0.89      0.89     85028

In [ ]:
# ROC curve and AUC
lr1_predproba = lr1.predict_proba(X_test)[:, 1]
AUC_lr1 = roc_auc_score(y_test, lr1_predproba)
print(f'AUC: {AUC_lr1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, lr1_predproba)
plt.plot(fpr, tpr, label='logistic regression Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9540
In [ ]:
rf1 = RandomForestClassifier(n_estimators=30, max_depth=10)
rf1.fit(X_train_mod3, y_train)
y_pred = rf1.predict(X_test)
print("score on test: " + str(rf1.score(X_test, y_test)))
print("score on train: "+ str(rf1.score(X_train_mod3, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_rf_b['3']=acc
<ipython-input-45-1b3f14efa2b7>:2: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().
  rf1.fit(X_train_mod3, y_train)
score on test: 0.9538269746436469
score on train: 0.9503157041070498
              precision    recall  f1-score   support

           0       0.96      0.91      0.93     30772
           1       0.95      0.98      0.96     54256

    accuracy                           0.95     85028
   macro avg       0.95      0.95      0.95     85028
weighted avg       0.95      0.95      0.95     85028

In [ ]:
rf1_predproba = rf1.predict_proba(X_test)[:, 1]
AUC_rf1 = roc_auc_score(y_test, rf1_predproba)
print(f'AUC: {AUC_rf1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, rf1_predproba)
plt.plot(fpr, tpr, label='random forest Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9885
In [ ]:
xgb1 = xgb.XGBClassifier(objective="binary:logistic", random_state=42)
xgb1.fit(X_train_mod3, y_train)
y_pred = xgb1.predict(X_test)
print("score on test: " + str(xgb1.score(X_test, y_test)))
print("score on train: "+ str(xgb1.score(X_train_mod3, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_xgb_b['3']=acc
score on test: 0.968904360916404
score on train: 0.992191391994439
              precision    recall  f1-score   support

           0       0.97      0.95      0.96     30772
           1       0.97      0.98      0.98     54256

    accuracy                           0.97     85028
   macro avg       0.97      0.96      0.97     85028
weighted avg       0.97      0.97      0.97     85028

In [ ]:
# ROC curve and AUC
xgb1_predproba = xgb1.predict_proba(X_test)[:, 1]
AUC_xgb1 = roc_auc_score(y_test, xgb1_predproba)
print(f'AUC: {AUC_xgb1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, xgb1_predproba)
plt.plot(fpr, tpr, label='Gradient boosting Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9961
In [ ]:
model=models.Sequential()
model.add(layers.Dense(128,activation='relu',input_shape=(42,)))
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(1,activation='sigmoid'))
model.summary

model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy', f1_m, precision_m, recall_m])

earlystopping = callbacks.EarlyStopping(monitor="loss",
                                        mode="min", patience=5,
                                        restore_best_weights=True)
model.fit(X_train_mod3, y_train, batch_size=128, epochs=100, callbacks=[earlystopping])

y_pred = model.predict(X_test)
print("score on test: " + str(model.evaluate(X_test,y_test)[1]))
print("score on train: "+ str(model.evaluate(X_train_mod3,y_train)[1]))
loss, accuracy, f1_score, precision, recall = model.evaluate(X_test, y_test, verbose=0)
scores=model.evaluate(X_test, y_test, verbose=0)
res_nn_b['3']=scores[1]
from sklearn import metrics
y_pred_mat = y_pred.round()
confusion_matrix = metrics.confusion_matrix(y_test, y_pred_mat)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
Epoch 1/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.2416 - accuracy: 0.8909 - f1_m: 0.9175 - precision_m: 0.8866 - recall_m: 0.9522
Epoch 2/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1876 - accuracy: 0.9142 - f1_m: 0.9337 - precision_m: 0.9176 - recall_m: 0.9516
Epoch 3/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1691 - accuracy: 0.9213 - f1_m: 0.9389 - precision_m: 0.9280 - recall_m: 0.9510
Epoch 4/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.1527 - accuracy: 0.9287 - f1_m: 0.9442 - precision_m: 0.9390 - recall_m: 0.9504
Epoch 5/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.1374 - accuracy: 0.9377 - f1_m: 0.9511 - precision_m: 0.9490 - recall_m: 0.9540
Epoch 6/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1168 - accuracy: 0.9497 - f1_m: 0.9605 - precision_m: 0.9598 - recall_m: 0.9617
Epoch 7/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1034 - accuracy: 0.9563 - f1_m: 0.9656 - precision_m: 0.9653 - recall_m: 0.9665
Epoch 8/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0957 - accuracy: 0.9598 - f1_m: 0.9684 - precision_m: 0.9687 - recall_m: 0.9685
Epoch 9/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0908 - accuracy: 0.9617 - f1_m: 0.9699 - precision_m: 0.9707 - recall_m: 0.9695
Epoch 10/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0874 - accuracy: 0.9629 - f1_m: 0.9708 - precision_m: 0.9714 - recall_m: 0.9707
Epoch 11/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0848 - accuracy: 0.9642 - f1_m: 0.9718 - precision_m: 0.9730 - recall_m: 0.9711
Epoch 12/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0824 - accuracy: 0.9655 - f1_m: 0.9729 - precision_m: 0.9743 - recall_m: 0.9719
Epoch 13/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0809 - accuracy: 0.9663 - f1_m: 0.9734 - precision_m: 0.9750 - recall_m: 0.9723
Epoch 14/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0792 - accuracy: 0.9667 - f1_m: 0.9737 - precision_m: 0.9753 - recall_m: 0.9725
Epoch 15/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0766 - accuracy: 0.9673 - f1_m: 0.9742 - precision_m: 0.9762 - recall_m: 0.9725
Epoch 16/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0767 - accuracy: 0.9682 - f1_m: 0.9750 - precision_m: 0.9772 - recall_m: 0.9731
Epoch 17/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0751 - accuracy: 0.9687 - f1_m: 0.9753 - precision_m: 0.9771 - recall_m: 0.9739
Epoch 18/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0741 - accuracy: 0.9688 - f1_m: 0.9754 - precision_m: 0.9776 - recall_m: 0.9736
Epoch 19/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0724 - accuracy: 0.9693 - f1_m: 0.9758 - precision_m: 0.9781 - recall_m: 0.9739
Epoch 20/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0722 - accuracy: 0.9698 - f1_m: 0.9762 - precision_m: 0.9786 - recall_m: 0.9741
Epoch 21/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0716 - accuracy: 0.9698 - f1_m: 0.9762 - precision_m: 0.9789 - recall_m: 0.9738
Epoch 22/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0700 - accuracy: 0.9704 - f1_m: 0.9766 - precision_m: 0.9791 - recall_m: 0.9745
Epoch 23/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0707 - accuracy: 0.9708 - f1_m: 0.9770 - precision_m: 0.9797 - recall_m: 0.9746
Epoch 24/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0682 - accuracy: 0.9710 - f1_m: 0.9771 - precision_m: 0.9794 - recall_m: 0.9751
Epoch 25/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0683 - accuracy: 0.9711 - f1_m: 0.9772 - precision_m: 0.9799 - recall_m: 0.9749
Epoch 26/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0667 - accuracy: 0.9720 - f1_m: 0.9779 - precision_m: 0.9806 - recall_m: 0.9756
Epoch 27/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0657 - accuracy: 0.9724 - f1_m: 0.9783 - precision_m: 0.9809 - recall_m: 0.9759
Epoch 28/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0656 - accuracy: 0.9725 - f1_m: 0.9783 - precision_m: 0.9812 - recall_m: 0.9758
Epoch 29/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0648 - accuracy: 0.9724 - f1_m: 0.9782 - precision_m: 0.9807 - recall_m: 0.9760
Epoch 30/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0640 - accuracy: 0.9731 - f1_m: 0.9788 - precision_m: 0.9812 - recall_m: 0.9766
Epoch 31/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0633 - accuracy: 0.9730 - f1_m: 0.9787 - precision_m: 0.9812 - recall_m: 0.9765
Epoch 32/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0630 - accuracy: 0.9737 - f1_m: 0.9793 - precision_m: 0.9817 - recall_m: 0.9771
Epoch 33/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0625 - accuracy: 0.9735 - f1_m: 0.9791 - precision_m: 0.9819 - recall_m: 0.9766
Epoch 34/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0623 - accuracy: 0.9739 - f1_m: 0.9794 - precision_m: 0.9821 - recall_m: 0.9771
Epoch 35/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0612 - accuracy: 0.9742 - f1_m: 0.9797 - precision_m: 0.9826 - recall_m: 0.9770
Epoch 36/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0609 - accuracy: 0.9747 - f1_m: 0.9800 - precision_m: 0.9825 - recall_m: 0.9778
Epoch 37/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0601 - accuracy: 0.9744 - f1_m: 0.9799 - precision_m: 0.9826 - recall_m: 0.9774
Epoch 38/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0592 - accuracy: 0.9750 - f1_m: 0.9803 - precision_m: 0.9829 - recall_m: 0.9780
Epoch 39/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0593 - accuracy: 0.9751 - f1_m: 0.9804 - precision_m: 0.9830 - recall_m: 0.9781
Epoch 40/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0580 - accuracy: 0.9756 - f1_m: 0.9808 - precision_m: 0.9833 - recall_m: 0.9785
Epoch 41/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0578 - accuracy: 0.9757 - f1_m: 0.9808 - precision_m: 0.9836 - recall_m: 0.9782
Epoch 42/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0570 - accuracy: 0.9759 - f1_m: 0.9809 - precision_m: 0.9838 - recall_m: 0.9784
Epoch 43/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0570 - accuracy: 0.9761 - f1_m: 0.9812 - precision_m: 0.9834 - recall_m: 0.9792
Epoch 44/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0564 - accuracy: 0.9764 - f1_m: 0.9814 - precision_m: 0.9842 - recall_m: 0.9788
Epoch 45/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0562 - accuracy: 0.9765 - f1_m: 0.9815 - precision_m: 0.9843 - recall_m: 0.9789
Epoch 46/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0553 - accuracy: 0.9769 - f1_m: 0.9818 - precision_m: 0.9845 - recall_m: 0.9794
Epoch 47/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0550 - accuracy: 0.9770 - f1_m: 0.9819 - precision_m: 0.9845 - recall_m: 0.9795
Epoch 48/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0549 - accuracy: 0.9771 - f1_m: 0.9819 - precision_m: 0.9847 - recall_m: 0.9794
Epoch 49/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0550 - accuracy: 0.9769 - f1_m: 0.9818 - precision_m: 0.9844 - recall_m: 0.9795
Epoch 50/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0527 - accuracy: 0.9783 - f1_m: 0.9829 - precision_m: 0.9853 - recall_m: 0.9807
Epoch 51/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0528 - accuracy: 0.9779 - f1_m: 0.9826 - precision_m: 0.9851 - recall_m: 0.9804
Epoch 52/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0529 - accuracy: 0.9775 - f1_m: 0.9822 - precision_m: 0.9847 - recall_m: 0.9800
Epoch 53/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0515 - accuracy: 0.9787 - f1_m: 0.9832 - precision_m: 0.9858 - recall_m: 0.9808
Epoch 54/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0518 - accuracy: 0.9783 - f1_m: 0.9829 - precision_m: 0.9857 - recall_m: 0.9803
Epoch 55/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0510 - accuracy: 0.9791 - f1_m: 0.9835 - precision_m: 0.9860 - recall_m: 0.9812
Epoch 56/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0506 - accuracy: 0.9788 - f1_m: 0.9833 - precision_m: 0.9859 - recall_m: 0.9809
Epoch 57/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0506 - accuracy: 0.9787 - f1_m: 0.9832 - precision_m: 0.9857 - recall_m: 0.9809
Epoch 58/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0505 - accuracy: 0.9786 - f1_m: 0.9832 - precision_m: 0.9855 - recall_m: 0.9811
Epoch 59/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0502 - accuracy: 0.9786 - f1_m: 0.9831 - precision_m: 0.9855 - recall_m: 0.9809
Epoch 60/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0491 - accuracy: 0.9798 - f1_m: 0.9841 - precision_m: 0.9864 - recall_m: 0.9820
Epoch 61/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0493 - accuracy: 0.9797 - f1_m: 0.9840 - precision_m: 0.9864 - recall_m: 0.9818
Epoch 62/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0488 - accuracy: 0.9796 - f1_m: 0.9839 - precision_m: 0.9865 - recall_m: 0.9815
Epoch 63/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0491 - accuracy: 0.9793 - f1_m: 0.9837 - precision_m: 0.9860 - recall_m: 0.9815
Epoch 64/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0483 - accuracy: 0.9801 - f1_m: 0.9843 - precision_m: 0.9870 - recall_m: 0.9820
Epoch 65/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0473 - accuracy: 0.9801 - f1_m: 0.9844 - precision_m: 0.9868 - recall_m: 0.9822
Epoch 66/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0479 - accuracy: 0.9801 - f1_m: 0.9843 - precision_m: 0.9867 - recall_m: 0.9821
Epoch 67/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0469 - accuracy: 0.9804 - f1_m: 0.9846 - precision_m: 0.9870 - recall_m: 0.9824
Epoch 68/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0469 - accuracy: 0.9805 - f1_m: 0.9846 - precision_m: 0.9869 - recall_m: 0.9826
Epoch 69/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0471 - accuracy: 0.9808 - f1_m: 0.9849 - precision_m: 0.9872 - recall_m: 0.9828
Epoch 70/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0457 - accuracy: 0.9810 - f1_m: 0.9850 - precision_m: 0.9872 - recall_m: 0.9830
Epoch 71/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0453 - accuracy: 0.9811 - f1_m: 0.9851 - precision_m: 0.9874 - recall_m: 0.9831
Epoch 72/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0456 - accuracy: 0.9811 - f1_m: 0.9851 - precision_m: 0.9874 - recall_m: 0.9830
Epoch 73/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0449 - accuracy: 0.9817 - f1_m: 0.9856 - precision_m: 0.9880 - recall_m: 0.9834
Epoch 74/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0460 - accuracy: 0.9811 - f1_m: 0.9851 - precision_m: 0.9874 - recall_m: 0.9830
Epoch 75/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0446 - accuracy: 0.9814 - f1_m: 0.9854 - precision_m: 0.9876 - recall_m: 0.9833
Epoch 76/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0439 - accuracy: 0.9820 - f1_m: 0.9858 - precision_m: 0.9879 - recall_m: 0.9839
Epoch 77/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0440 - accuracy: 0.9819 - f1_m: 0.9858 - precision_m: 0.9880 - recall_m: 0.9837
Epoch 78/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0441 - accuracy: 0.9816 - f1_m: 0.9855 - precision_m: 0.9876 - recall_m: 0.9836
Epoch 79/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0425 - accuracy: 0.9825 - f1_m: 0.9862 - precision_m: 0.9885 - recall_m: 0.9842
Epoch 80/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0431 - accuracy: 0.9820 - f1_m: 0.9858 - precision_m: 0.9879 - recall_m: 0.9840
Epoch 81/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0436 - accuracy: 0.9821 - f1_m: 0.9859 - precision_m: 0.9880 - recall_m: 0.9841
Epoch 82/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0431 - accuracy: 0.9820 - f1_m: 0.9858 - precision_m: 0.9880 - recall_m: 0.9838
Epoch 83/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0421 - accuracy: 0.9827 - f1_m: 0.9864 - precision_m: 0.9885 - recall_m: 0.9844
Epoch 84/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0421 - accuracy: 0.9828 - f1_m: 0.9865 - precision_m: 0.9886 - recall_m: 0.9845
Epoch 85/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0415 - accuracy: 0.9827 - f1_m: 0.9864 - precision_m: 0.9882 - recall_m: 0.9847
Epoch 86/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0415 - accuracy: 0.9830 - f1_m: 0.9866 - precision_m: 0.9888 - recall_m: 0.9846
Epoch 87/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0407 - accuracy: 0.9832 - f1_m: 0.9867 - precision_m: 0.9888 - recall_m: 0.9848
Epoch 88/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0414 - accuracy: 0.9831 - f1_m: 0.9867 - precision_m: 0.9886 - recall_m: 0.9849
Epoch 89/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0397 - accuracy: 0.9838 - f1_m: 0.9872 - precision_m: 0.9894 - recall_m: 0.9853
Epoch 90/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0406 - accuracy: 0.9832 - f1_m: 0.9868 - precision_m: 0.9888 - recall_m: 0.9850
Epoch 91/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0402 - accuracy: 0.9837 - f1_m: 0.9871 - precision_m: 0.9889 - recall_m: 0.9855
Epoch 92/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0405 - accuracy: 0.9833 - f1_m: 0.9868 - precision_m: 0.9887 - recall_m: 0.9852
Epoch 93/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0395 - accuracy: 0.9840 - f1_m: 0.9874 - precision_m: 0.9892 - recall_m: 0.9857
Epoch 94/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0396 - accuracy: 0.9838 - f1_m: 0.9872 - precision_m: 0.9892 - recall_m: 0.9854
Epoch 95/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0397 - accuracy: 0.9838 - f1_m: 0.9872 - precision_m: 0.9891 - recall_m: 0.9855
Epoch 96/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0391 - accuracy: 0.9839 - f1_m: 0.9873 - precision_m: 0.9893 - recall_m: 0.9855
Epoch 97/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0387 - accuracy: 0.9842 - f1_m: 0.9875 - precision_m: 0.9895 - recall_m: 0.9858
Epoch 98/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0384 - accuracy: 0.9841 - f1_m: 0.9875 - precision_m: 0.9893 - recall_m: 0.9858
Epoch 99/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0387 - accuracy: 0.9844 - f1_m: 0.9877 - precision_m: 0.9896 - recall_m: 0.9860
Epoch 100/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0390 - accuracy: 0.9841 - f1_m: 0.9875 - precision_m: 0.9893 - recall_m: 0.9858
2658/2658 [==============================] - 2s 916us/step
2658/2658 [==============================] - 3s 1ms/step - loss: 0.0812 - accuracy: 0.9719 - f1_m: 0.9775 - precision_m: 0.9799 - recall_m: 0.9761
score on test: 0.9719151258468628
5395/5395 [==============================] - 6s 1ms/step - loss: 0.0357 - accuracy: 0.9854 - f1_m: 0.9883 - precision_m: 0.9897 - recall_m: 0.9876
score on train: 0.9854312539100647
In [ ]:
from sklearn.metrics import auc
fpr_keras, tpr_keras, thresholds_keras = roc_curve(y_test, y_pred)
auc_keras = auc(fpr_keras, tpr_keras)
plt.plot([0, 1], [0, 1], 'k--')
plt.plot(fpr_keras, tpr_keras, label='Keras (area = {:.3f})'.format(auc_keras))
plt.xlabel('False positive rate')
plt.ylabel('True positive rate')
plt.title('ROC curve')
plt.legend(loc='best')
plt.show()
In [ ]:
dtree1 = DecisionTreeClassifier(max_depth = 10).fit(X_train_mod3, y_multi_train)
y_pred = dtree1.predict(X_test)
print("score on test: " + str(dtree1.score(X_test, y_multi_test)))
print("score on train: "+ str(dtree1.score(X_train_mod3, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_tree['3']=acc
score on test: 0.805028931646046
score on train: 0.82693622197764
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
              precision    recall  f1-score   support

           0       0.90      0.94      0.92     30772
           1       0.97      0.97      0.97     19423
           2       0.60      0.81      0.69     14709
           3       0.69      0.59      0.63      7921
           4       0.42      0.17      0.24      5357
           5       0.70      0.72      0.71      4578
           6       0.67      0.02      0.04       909
           7       0.16      0.02      0.03       780
           8       0.43      0.01      0.01       513
           9       0.00      0.00      0.00        66

    accuracy                           0.81     85028
   macro avg       0.55      0.42      0.42     85028
weighted avg       0.79      0.81      0.79     85028

In [ ]:
plot_ROC_curve(dtree1, X_train_mod3, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for DecisionTreeClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=DecisionTreeClassifier(max_depth=10))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for DecisionTreeClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=DecisionTreeClassifier(max_depth=10))
DecisionTreeClassifier(max_depth=10)
DecisionTreeClassifier(max_depth=10)
In [ ]:
rf2 = RandomForestClassifier(n_estimators=30, max_depth=10).fit(X_train_mod3, y_multi_train)
y_pred = rf2.predict(X_test)
print("score on test: " + str(rf2.score(X_test, y_multi_test)))
print("score on train: "+ str(rf2.score(X_train_mod3, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
accuracy = rf2.score(X_test, y_multi_test)
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_rf_m['3']=acc
<ipython-input-53-c801b2656da6>:1: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().
  rf2 = RandomForestClassifier(n_estimators=30, max_depth=10).fit(X_train_mod3, y_multi_train)
score on test: 0.7935268382179987
score on train: 0.8144528760933789
              precision    recall  f1-score   support

           0       0.82      0.97      0.89     30772
           1       1.00      0.97      0.98     19423
           2       0.57      0.89      0.69     14709
           3       0.77      0.41      0.53      7921
           4       0.84      0.01      0.02      5357
           5       0.96      0.54      0.69      4578
           6       1.00      0.00      0.00       909
           7       0.00      0.00      0.00       780
           8       0.00      0.00      0.00       513
           9       0.00      0.00      0.00        66

    accuracy                           0.79     85028
   macro avg       0.60      0.38      0.38     85028
weighted avg       0.81      0.79      0.75     85028

/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
In [ ]:
plot_ROC_curve(rf2, X_train_mod3, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for RandomForestClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=RandomForestClassifier(max_depth=10, n_estimators=30))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for RandomForestClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=RandomForestClassifier(max_depth=10, n_estimators=30))
RandomForestClassifier(max_depth=10, n_estimators=30)
RandomForestClassifier(max_depth=10, n_estimators=30)
In [ ]:
xgb2 = xgb.XGBClassifier(objective="multi:softprob", random_state=42)
xgb2.fit(X_train_mod3, y_multi_train)
y_pred = xgb2.predict(X_test)
print("score on test: " + str(xgb2.score(X_test, y_multi_test)))
print("score on train: "+ str(xgb2.score(X_train_mod3, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_xgb_m['3']=acc
score on test: 0.8516488686079879
score on train: 0.9072640908300991
              precision    recall  f1-score   support

           0       0.95      0.97      0.96     30772
           1       1.00      0.98      0.99     19423
           2       0.72      0.72      0.72     14709
           3       0.78      0.79      0.79      7921
           4       0.38      0.49      0.43      5357
           5       0.84      0.78      0.81      4578
           6       0.65      0.10      0.17       909
           7       0.57      0.09      0.15       780
           8       0.73      0.30      0.42       513
           9       0.64      0.27      0.38        66

    accuracy                           0.85     85028
   macro avg       0.73      0.55      0.58     85028
weighted avg       0.86      0.85      0.85     85028

In [ ]:
plot_ROC_curve(xgb2, X_train_mod3, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for XGBClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=XGBClassifier(base_score=None, booster=None, callbacks=None,
                               colsample_bylevel=None, colsample_bynode=None,
                               colsample_bytree=None,
                               early_stopping_rounds=None,
                               enable_categorical=False, eval_metric=None,
                               feature_types=None, gamma=None, g...
                               grow_policy=None, importance_type=None,
                               interaction_constraints=None, learning_rate=None,
                               max_bin=None, max_cat_threshold=None,
                               max_cat_to_onehot=None, max_delta_step=None,
                               max_depth=None, max_leaves=None,
                               min_child_weight=None, missing=nan,
                               monotone_constraints=None, n_estimators=100,
                               n_jobs=None, num_parallel_tree=None,
                               objective='multi:softprob', predictor=None, ...))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for XGBClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=XGBClassifier(base_score=None, booster=None, callbacks=None,
                               colsample_bylevel=None, colsample_bynode=None,
                               colsample_bytree=None,
                               early_stopping_rounds=None,
                               enable_categorical=False, eval_metric=None,
                               feature_types=None, gamma=None, g...
                               grow_policy=None, importance_type=None,
                               interaction_constraints=None, learning_rate=None,
                               max_bin=None, max_cat_threshold=None,
                               max_cat_to_onehot=None, max_delta_step=None,
                               max_depth=None, max_leaves=None,
                               min_child_weight=None, missing=nan,
                               monotone_constraints=None, n_estimators=100,
                               n_jobs=None, num_parallel_tree=None,
                               objective='multi:softprob', predictor=None, ...))
XGBClassifier(base_score=None, booster=None, callbacks=None,
              colsample_bylevel=None, colsample_bynode=None,
              colsample_bytree=None, early_stopping_rounds=None,
              enable_categorical=False, eval_metric=None, feature_types=None,
              gamma=None, gpu_id=None, grow_policy=None, importance_type=None,
              interaction_constraints=None, learning_rate=None, max_bin=None,
              max_cat_threshold=None, max_cat_to_onehot=None,
              max_delta_step=None, max_depth=None, max_leaves=None,
              min_child_weight=None, missing=nan, monotone_constraints=None,
              n_estimators=100, n_jobs=None, num_parallel_tree=None,
              objective='multi:softprob', predictor=None, ...)
XGBClassifier(base_score=None, booster=None, callbacks=None,
              colsample_bylevel=None, colsample_bynode=None,
              colsample_bytree=None, early_stopping_rounds=None,
              enable_categorical=False, eval_metric=None, feature_types=None,
              gamma=None, gpu_id=None, grow_policy=None, importance_type=None,
              interaction_constraints=None, learning_rate=None, max_bin=None,
              max_cat_threshold=None, max_cat_to_onehot=None,
              max_delta_step=None, max_depth=None, max_leaves=None,
              min_child_weight=None, missing=nan, monotone_constraints=None,
              n_estimators=100, n_jobs=None, num_parallel_tree=None,
              objective='multi:softprob', predictor=None, ...)
In [ ]:
model2 = models.Sequential()
model2.add(layers.Dense(128, input_shape = (42,), activation = "relu"))
model2.add(layers.Dense(64, activation = "relu"))
model2.add(layers.Dense(64,activation="relu"))
model2.add(layers.Dense(10, activation = "softmax"))
model2.compile(optimizer='adam', loss="sparse_categorical_crossentropy", metrics = ["accuracy", f1_m, precision_m, recall_m])
model2.summary()

earlystopping = callbacks.EarlyStopping(monitor="loss",
                                        mode="min", patience=5,
                                        restore_best_weights=True)

model2.fit(X_train_mod3,y_multi_train,epochs=100,batch_size=128,callbacks=[earlystopping])
y_pred_arr = model2.predict(X_test)
y_pred = []
for el in y_pred_arr:
    ind = np.argmax(el)
    y_pred.append(ind)
scores=model2.evaluate(X_test, y_multi_test, verbose=0)
res_nn_m['3']=scores[1]
print("score on test: " + str(model2.evaluate(X_test,y_multi_test)[1]))
print("score on train: "+ str(model2.evaluate(X_train_mod3,y_multi_train)[1]))
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
Model: "sequential_5"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense_20 (Dense)            (None, 128)               5504      
                                                                 
 dense_21 (Dense)            (None, 64)                8256      
                                                                 
 dense_22 (Dense)            (None, 64)                4160      
                                                                 
 dense_23 (Dense)            (None, 10)                650       
                                                                 
=================================================================
Total params: 18,570
Trainable params: 18,570
Non-trainable params: 0
_________________________________________________________________
Epoch 1/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.8478 - accuracy: 0.6924 - f1_m: 1.6986 - precision_m: 1.8692 - recall_m: 1.6835
Epoch 2/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.6573 - accuracy: 0.7569 - f1_m: 1.5087 - precision_m: 1.4206 - recall_m: 1.6169
Epoch 3/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5967 - accuracy: 0.7761 - f1_m: 1.4310 - precision_m: 1.3171 - recall_m: 1.5740
Epoch 4/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5616 - accuracy: 0.7883 - f1_m: 1.3826 - precision_m: 1.2591 - recall_m: 1.5398
Epoch 5/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5388 - accuracy: 0.7962 - f1_m: 1.3509 - precision_m: 1.2231 - recall_m: 1.5157
Epoch 6/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5231 - accuracy: 0.8012 - f1_m: 1.3281 - precision_m: 1.1945 - recall_m: 1.5020
Epoch 7/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5105 - accuracy: 0.8055 - f1_m: 1.3158 - precision_m: 1.1810 - recall_m: 1.4921
Epoch 8/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5018 - accuracy: 0.8092 - f1_m: 1.3029 - precision_m: 1.1644 - recall_m: 1.4851
Epoch 9/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4936 - accuracy: 0.8116 - f1_m: 1.2992 - precision_m: 1.1617 - recall_m: 1.4799
Epoch 10/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4858 - accuracy: 0.8143 - f1_m: 1.2896 - precision_m: 1.1495 - recall_m: 1.4750
Epoch 11/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4747 - accuracy: 0.8187 - f1_m: 1.2779 - precision_m: 1.1346 - recall_m: 1.4691
Epoch 12/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4660 - accuracy: 0.8223 - f1_m: 1.2691 - precision_m: 1.1249 - recall_m: 1.4621
Epoch 13/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4570 - accuracy: 0.8250 - f1_m: 1.2629 - precision_m: 1.1182 - recall_m: 1.4575
Epoch 14/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4488 - accuracy: 0.8284 - f1_m: 1.2580 - precision_m: 1.1126 - recall_m: 1.4539
Epoch 15/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4438 - accuracy: 0.8309 - f1_m: 1.2514 - precision_m: 1.1045 - recall_m: 1.4493
Epoch 16/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4386 - accuracy: 0.8327 - f1_m: 1.2473 - precision_m: 1.1002 - recall_m: 1.4461
Epoch 17/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4341 - accuracy: 0.8334 - f1_m: 1.2422 - precision_m: 1.0945 - recall_m: 1.4419
Epoch 18/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4295 - accuracy: 0.8354 - f1_m: 1.2391 - precision_m: 1.0904 - recall_m: 1.4405
Epoch 19/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4276 - accuracy: 0.8365 - f1_m: 1.2362 - precision_m: 1.0871 - recall_m: 1.4385
Epoch 20/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4244 - accuracy: 0.8366 - f1_m: 1.2338 - precision_m: 1.0852 - recall_m: 1.4360
Epoch 21/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4222 - accuracy: 0.8384 - f1_m: 1.2312 - precision_m: 1.0828 - recall_m: 1.4329
Epoch 22/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4197 - accuracy: 0.8395 - f1_m: 1.2286 - precision_m: 1.0786 - recall_m: 1.4328
Epoch 23/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4173 - accuracy: 0.8405 - f1_m: 1.2281 - precision_m: 1.0787 - recall_m: 1.4309
Epoch 24/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4165 - accuracy: 0.8404 - f1_m: 1.2238 - precision_m: 1.0744 - recall_m: 1.4276
Epoch 25/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4139 - accuracy: 0.8412 - f1_m: 1.2221 - precision_m: 1.0727 - recall_m: 1.4260
Epoch 26/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4119 - accuracy: 0.8408 - f1_m: 1.2204 - precision_m: 1.0703 - recall_m: 1.4253
Epoch 27/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4105 - accuracy: 0.8422 - f1_m: 1.2193 - precision_m: 1.0692 - recall_m: 1.4244
Epoch 28/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4093 - accuracy: 0.8420 - f1_m: 1.2219 - precision_m: 1.0720 - recall_m: 1.4269
Epoch 29/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4083 - accuracy: 0.8432 - f1_m: 1.2184 - precision_m: 1.0679 - recall_m: 1.4242
Epoch 30/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4054 - accuracy: 0.8433 - f1_m: 1.2182 - precision_m: 1.0679 - recall_m: 1.4234
Epoch 31/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.4040 - accuracy: 0.8441 - f1_m: 1.2164 - precision_m: 1.0654 - recall_m: 1.4229
Epoch 32/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4027 - accuracy: 0.8446 - f1_m: 1.2156 - precision_m: 1.0647 - recall_m: 1.4222
Epoch 33/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4016 - accuracy: 0.8456 - f1_m: 1.2154 - precision_m: 1.0647 - recall_m: 1.4218
Epoch 34/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.4012 - accuracy: 0.8446 - f1_m: 1.2137 - precision_m: 1.0626 - recall_m: 1.4210
Epoch 35/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.4010 - accuracy: 0.8457 - f1_m: 1.2129 - precision_m: 1.0621 - recall_m: 1.4195
Epoch 36/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.3985 - accuracy: 0.8462 - f1_m: 1.2122 - precision_m: 1.0613 - recall_m: 1.4190
Epoch 37/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3970 - accuracy: 0.8460 - f1_m: 1.2119 - precision_m: 1.0610 - recall_m: 1.4190
Epoch 38/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3959 - accuracy: 0.8469 - f1_m: 1.2104 - precision_m: 1.0591 - recall_m: 1.4176
Epoch 39/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3942 - accuracy: 0.8470 - f1_m: 1.2108 - precision_m: 1.0594 - recall_m: 1.4185
Epoch 40/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3948 - accuracy: 0.8470 - f1_m: 1.2077 - precision_m: 1.0563 - recall_m: 1.4158
Epoch 41/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3930 - accuracy: 0.8478 - f1_m: 1.2094 - precision_m: 1.0585 - recall_m: 1.4164
Epoch 42/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3907 - accuracy: 0.8487 - f1_m: 1.2074 - precision_m: 1.0560 - recall_m: 1.4153
Epoch 43/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3908 - accuracy: 0.8479 - f1_m: 1.2076 - precision_m: 1.0558 - recall_m: 1.4162
Epoch 44/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3890 - accuracy: 0.8489 - f1_m: 1.2056 - precision_m: 1.0539 - recall_m: 1.4141
Epoch 45/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3886 - accuracy: 0.8489 - f1_m: 1.2050 - precision_m: 1.0534 - recall_m: 1.4134
Epoch 46/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3886 - accuracy: 0.8486 - f1_m: 1.2044 - precision_m: 1.0530 - recall_m: 1.4126
Epoch 47/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3879 - accuracy: 0.8490 - f1_m: 1.2070 - precision_m: 1.0554 - recall_m: 1.4156
Epoch 48/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.3871 - accuracy: 0.8502 - f1_m: 1.2048 - precision_m: 1.0526 - recall_m: 1.4143
Epoch 49/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3859 - accuracy: 0.8501 - f1_m: 1.2047 - precision_m: 1.0532 - recall_m: 1.4128
Epoch 50/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3836 - accuracy: 0.8503 - f1_m: 1.2034 - precision_m: 1.0514 - recall_m: 1.4126
Epoch 51/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3832 - accuracy: 0.8506 - f1_m: 1.2027 - precision_m: 1.0500 - recall_m: 1.4131
Epoch 52/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3831 - accuracy: 0.8503 - f1_m: 1.2018 - precision_m: 1.0503 - recall_m: 1.4103
Epoch 53/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3837 - accuracy: 0.8508 - f1_m: 1.2005 - precision_m: 1.0482 - recall_m: 1.4105
Epoch 54/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3812 - accuracy: 0.8512 - f1_m: 1.2019 - precision_m: 1.0494 - recall_m: 1.4120
Epoch 55/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3810 - accuracy: 0.8513 - f1_m: 1.2001 - precision_m: 1.0469 - recall_m: 1.4116
Epoch 56/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3794 - accuracy: 0.8520 - f1_m: 1.2032 - precision_m: 1.0510 - recall_m: 1.4125
Epoch 57/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3799 - accuracy: 0.8527 - f1_m: 1.1985 - precision_m: 1.0459 - recall_m: 1.4091
Epoch 58/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3783 - accuracy: 0.8527 - f1_m: 1.2000 - precision_m: 1.0473 - recall_m: 1.4104
Epoch 59/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3771 - accuracy: 0.8522 - f1_m: 1.1986 - precision_m: 1.0460 - recall_m: 1.4092
Epoch 60/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3767 - accuracy: 0.8518 - f1_m: 1.2001 - precision_m: 1.0476 - recall_m: 1.4101
Epoch 61/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3765 - accuracy: 0.8536 - f1_m: 1.1983 - precision_m: 1.0452 - recall_m: 1.4098
Epoch 62/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3755 - accuracy: 0.8526 - f1_m: 1.1984 - precision_m: 1.0458 - recall_m: 1.4092
Epoch 63/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3745 - accuracy: 0.8537 - f1_m: 1.1961 - precision_m: 1.0433 - recall_m: 1.4073
Epoch 64/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3740 - accuracy: 0.8533 - f1_m: 1.1990 - precision_m: 1.0465 - recall_m: 1.4091
Epoch 65/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3732 - accuracy: 0.8539 - f1_m: 1.1969 - precision_m: 1.0439 - recall_m: 1.4077
Epoch 66/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3748 - accuracy: 0.8540 - f1_m: 1.1940 - precision_m: 1.0410 - recall_m: 1.4053
Epoch 67/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3717 - accuracy: 0.8543 - f1_m: 1.1946 - precision_m: 1.0405 - recall_m: 1.4077
Epoch 68/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3716 - accuracy: 0.8543 - f1_m: 1.1947 - precision_m: 1.0419 - recall_m: 1.4056
Epoch 69/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3699 - accuracy: 0.8550 - f1_m: 1.1934 - precision_m: 1.0394 - recall_m: 1.4063
Epoch 70/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3696 - accuracy: 0.8556 - f1_m: 1.1917 - precision_m: 1.0380 - recall_m: 1.4044
Epoch 71/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3700 - accuracy: 0.8554 - f1_m: 1.1947 - precision_m: 1.0406 - recall_m: 1.4079
Epoch 72/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3691 - accuracy: 0.8552 - f1_m: 1.1938 - precision_m: 1.0405 - recall_m: 1.4056
Epoch 73/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3676 - accuracy: 0.8556 - f1_m: 1.1922 - precision_m: 1.0390 - recall_m: 1.4042
Epoch 74/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.3682 - accuracy: 0.8551 - f1_m: 1.1931 - precision_m: 1.0396 - recall_m: 1.4054
Epoch 75/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3670 - accuracy: 0.8564 - f1_m: 1.1930 - precision_m: 1.0393 - recall_m: 1.4055
Epoch 76/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3668 - accuracy: 0.8563 - f1_m: 1.1909 - precision_m: 1.0372 - recall_m: 1.4039
Epoch 77/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3665 - accuracy: 0.8569 - f1_m: 1.1921 - precision_m: 1.0384 - recall_m: 1.4054
Epoch 78/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3670 - accuracy: 0.8561 - f1_m: 1.1927 - precision_m: 1.0390 - recall_m: 1.4053
Epoch 79/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3650 - accuracy: 0.8571 - f1_m: 1.1902 - precision_m: 1.0361 - recall_m: 1.4036
Epoch 80/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3641 - accuracy: 0.8574 - f1_m: 1.1900 - precision_m: 1.0362 - recall_m: 1.4031
Epoch 81/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3641 - accuracy: 0.8577 - f1_m: 1.1904 - precision_m: 1.0365 - recall_m: 1.4037
Epoch 82/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3634 - accuracy: 0.8573 - f1_m: 1.1881 - precision_m: 1.0337 - recall_m: 1.4022
Epoch 83/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3625 - accuracy: 0.8580 - f1_m: 1.1888 - precision_m: 1.0347 - recall_m: 1.4027
Epoch 84/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3630 - accuracy: 0.8572 - f1_m: 1.1878 - precision_m: 1.0337 - recall_m: 1.4018
Epoch 85/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3612 - accuracy: 0.8579 - f1_m: 1.1886 - precision_m: 1.0345 - recall_m: 1.4024
Epoch 86/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3617 - accuracy: 0.8577 - f1_m: 1.1892 - precision_m: 1.0358 - recall_m: 1.4017
Epoch 87/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3623 - accuracy: 0.8575 - f1_m: 1.1884 - precision_m: 1.0339 - recall_m: 1.4026
Epoch 88/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3603 - accuracy: 0.8584 - f1_m: 1.1848 - precision_m: 1.0305 - recall_m: 1.3988
Epoch 89/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3615 - accuracy: 0.8577 - f1_m: 1.1871 - precision_m: 1.0331 - recall_m: 1.4006
Epoch 90/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3591 - accuracy: 0.8594 - f1_m: 1.1839 - precision_m: 1.0298 - recall_m: 1.3979
Epoch 91/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3595 - accuracy: 0.8589 - f1_m: 1.1868 - precision_m: 1.0323 - recall_m: 1.4009
Epoch 92/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3600 - accuracy: 0.8586 - f1_m: 1.1880 - precision_m: 1.0334 - recall_m: 1.4027
Epoch 93/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3599 - accuracy: 0.8592 - f1_m: 1.1860 - precision_m: 1.0324 - recall_m: 1.3991
Epoch 94/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3570 - accuracy: 0.8597 - f1_m: 1.1842 - precision_m: 1.0298 - recall_m: 1.3986
Epoch 95/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3572 - accuracy: 0.8595 - f1_m: 1.1838 - precision_m: 1.0294 - recall_m: 1.3984
Epoch 96/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3582 - accuracy: 0.8598 - f1_m: 1.1837 - precision_m: 1.0292 - recall_m: 1.3984
Epoch 97/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3563 - accuracy: 0.8598 - f1_m: 1.1839 - precision_m: 1.0295 - recall_m: 1.3983
Epoch 98/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3575 - accuracy: 0.8595 - f1_m: 1.1833 - precision_m: 1.0289 - recall_m: 1.3976
Epoch 99/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3558 - accuracy: 0.8595 - f1_m: 1.1838 - precision_m: 1.0292 - recall_m: 1.3986
Epoch 100/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3556 - accuracy: 0.8598 - f1_m: 1.1825 - precision_m: 1.0281 - recall_m: 1.3971
2658/2658 [==============================] - 3s 950us/step
2658/2658 [==============================] - 3s 1ms/step - loss: 0.4266 - accuracy: 0.8465 - f1_m: 1.1754 - precision_m: 1.0229 - recall_m: 1.4019
score on test: 0.8464505672454834
5395/5395 [==============================] - 6s 1ms/step - loss: 0.3549 - accuracy: 0.8607 - f1_m: 1.1712 - precision_m: 1.0203 - recall_m: 1.3958
score on train: 0.86066734790802
In [ ]:
fig, c_ax = plt.subplots(1,1, figsize = (12, 8))
print('ROC AUC score:', multiclass_roc_auc_score(y_multi_test, y_pred))

c_ax.legend()
c_ax.set_xlabel('False Positive Rate')
c_ax.set_ylabel('True Positive Rate')
plt.show()
ROC AUC score: 0.7407588822697762

Noise range 2

In [ ]:
noise4 = 4
X_train_mod4 = modify_dataset(X_train, variables_to_poison, noise4)

X_train_mod4
Out[ ]:
array([[ 1.79214449, -0.2082886 , -3.08683061, ..., -0.8410797 ,
         0.31502158, -0.12070382],
       [-0.57638416,  1.78686151,  9.08331212, ...,  1.29036785,
        -1.94185765, -0.12070382],
       [-1.0569863 , -0.20828827, -7.25638579, ...,  0.34067846,
        -1.6484505 , -0.12070382],
       ...,
       [-0.47187522, -0.06694436,  4.49053066, ..., -0.72809357,
        -2.84974832, -0.12070382],
       [-0.1666061 , -0.18783648, -3.83237825, ..., -2.83790831,
         0.82965585, -0.12070382],
       [-0.6757627 , -0.20011705,  2.61409594, ...,  2.11692769,
         2.65200419, -0.12070382]])
In [ ]:
from sklearn import metrics
from sklearn.metrics import (confusion_matrix, accuracy_score, precision_score, recall_score, f1_score)
lr1=LogisticRegression()
lr1.fit(X_train_mod4, y_train)
y_pred = lr1.predict(X_test)
print("score on test: " + str(lr1.score(X_test, y_test)))
print("score on train: "+ str(lr1.score(X_train_mod4, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_log['4']=acc
/usr/local/lib/python3.10/dist-packages/sklearn/utils/validation.py:1143: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)
/usr/local/lib/python3.10/dist-packages/sklearn/linear_model/_logistic.py:458: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
    https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
  n_iter_i = _check_optimize_result(
score on test: 0.8924471938655502
score on train: 0.8928575566239935
              precision    recall  f1-score   support

           0       0.93      0.76      0.84     30772
           1       0.88      0.97      0.92     54256

    accuracy                           0.89     85028
   macro avg       0.90      0.86      0.88     85028
weighted avg       0.90      0.89      0.89     85028

In [ ]:
# ROC curve and AUC
lr1_predproba = lr1.predict_proba(X_test)[:, 1]
AUC_lr1 = roc_auc_score(y_test, lr1_predproba)
print(f'AUC: {AUC_lr1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, lr1_predproba)
plt.plot(fpr, tpr, label='logistic regression Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9538
In [ ]:
rf1 = RandomForestClassifier(n_estimators=30, max_depth=10)
rf1.fit(X_train_mod4, y_train)
y_pred = rf1.predict(X_test)
print("score on test: " + str(rf1.score(X_test, y_test)))
print("score on train: "+ str(rf1.score(X_train_mod4, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_rf_b['4']=acc
<ipython-input-62-e1f13e046cab>:2: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().
  rf1.fit(X_train_mod4, y_train)
score on test: 0.866020604977184
score on train: 0.9475931182297399
              precision    recall  f1-score   support

           0       0.75      0.94      0.83     30772
           1       0.96      0.83      0.89     54256

    accuracy                           0.87     85028
   macro avg       0.86      0.88      0.86     85028
weighted avg       0.88      0.87      0.87     85028

In [ ]:
rf1_predproba = rf1.predict_proba(X_test)[:, 1]
AUC_rf1 = roc_auc_score(y_test, rf1_predproba)
print(f'AUC: {AUC_rf1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, rf1_predproba)
plt.plot(fpr, tpr, label='random forest Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9654
In [ ]:
xgb1 = xgb.XGBClassifier(objective="binary:logistic", random_state=42)
xgb1.fit(X_train_mod4, y_train)
y_pred = xgb1.predict(X_test)
print("score on test: " + str(xgb1.score(X_test, y_test)))
print("score on train: "+ str(xgb1.score(X_train_mod4, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_xgb_b['4']=acc
score on test: 0.9683751234887331
score on train: 0.9921682210508023
              precision    recall  f1-score   support

           0       0.96      0.95      0.96     30772
           1       0.97      0.98      0.98     54256

    accuracy                           0.97     85028
   macro avg       0.97      0.96      0.97     85028
weighted avg       0.97      0.97      0.97     85028

In [ ]:
# ROC curve and AUC
xgb1_predproba = xgb1.predict_proba(X_test)[:, 1]
AUC_xgb1 = roc_auc_score(y_test, xgb1_predproba)
print(f'AUC: {AUC_xgb1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, xgb1_predproba)
plt.plot(fpr, tpr, label='Gradient boosting Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9959
In [ ]:
model=models.Sequential()
model.add(layers.Dense(128,activation='relu',input_shape=(42,)))
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(1,activation='sigmoid'))
model.summary

model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy', f1_m, precision_m, recall_m])

earlystopping = callbacks.EarlyStopping(monitor="loss",
                                        mode="min", patience=5,
                                        restore_best_weights=True)
model.fit(X_train_mod4, y_train, batch_size=128, epochs=100, callbacks=[earlystopping])

y_pred = model.predict(X_test)
print("score on test: " + str(model.evaluate(X_test,y_test)[1]))
print("score on train: "+ str(model.evaluate(X_train_mod4,y_train)[1]))
loss, accuracy, f1_score, precision, recall = model.evaluate(X_test, y_test, verbose=0)
scores=model.evaluate(X_test, y_test, verbose=0)
res_nn_b['4']=scores[1]
from sklearn import metrics
y_pred_mat = y_pred.round()
confusion_matrix = metrics.confusion_matrix(y_test, y_pred_mat)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
Epoch 1/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.2533 - accuracy: 0.8847 - f1_m: 0.9129 - precision_m: 0.8802 - recall_m: 0.9499
Epoch 2/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1917 - accuracy: 0.9118 - f1_m: 0.9320 - precision_m: 0.9140 - recall_m: 0.9518
Epoch 3/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1769 - accuracy: 0.9193 - f1_m: 0.9375 - precision_m: 0.9235 - recall_m: 0.9528
Epoch 4/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1577 - accuracy: 0.9292 - f1_m: 0.9449 - precision_m: 0.9358 - recall_m: 0.9550
Epoch 5/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1299 - accuracy: 0.9438 - f1_m: 0.9560 - precision_m: 0.9520 - recall_m: 0.9607
Epoch 6/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1103 - accuracy: 0.9526 - f1_m: 0.9628 - precision_m: 0.9613 - recall_m: 0.9649
Epoch 7/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1034 - accuracy: 0.9558 - f1_m: 0.9653 - precision_m: 0.9652 - recall_m: 0.9658
Epoch 8/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0978 - accuracy: 0.9583 - f1_m: 0.9672 - precision_m: 0.9676 - recall_m: 0.9674
Epoch 9/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0947 - accuracy: 0.9596 - f1_m: 0.9682 - precision_m: 0.9691 - recall_m: 0.9678
Epoch 10/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0914 - accuracy: 0.9610 - f1_m: 0.9693 - precision_m: 0.9700 - recall_m: 0.9689
Epoch 11/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0895 - accuracy: 0.9617 - f1_m: 0.9699 - precision_m: 0.9714 - recall_m: 0.9688
Epoch 12/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0878 - accuracy: 0.9625 - f1_m: 0.9704 - precision_m: 0.9722 - recall_m: 0.9691
Epoch 13/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0855 - accuracy: 0.9636 - f1_m: 0.9713 - precision_m: 0.9727 - recall_m: 0.9703
Epoch 14/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0837 - accuracy: 0.9646 - f1_m: 0.9721 - precision_m: 0.9738 - recall_m: 0.9708
Epoch 15/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0809 - accuracy: 0.9662 - f1_m: 0.9733 - precision_m: 0.9753 - recall_m: 0.9717
Epoch 16/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0803 - accuracy: 0.9660 - f1_m: 0.9732 - precision_m: 0.9752 - recall_m: 0.9716
Epoch 17/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0786 - accuracy: 0.9665 - f1_m: 0.9736 - precision_m: 0.9759 - recall_m: 0.9718
Epoch 18/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0769 - accuracy: 0.9674 - f1_m: 0.9743 - precision_m: 0.9766 - recall_m: 0.9723
Epoch 19/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0758 - accuracy: 0.9677 - f1_m: 0.9745 - precision_m: 0.9768 - recall_m: 0.9726
Epoch 20/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0745 - accuracy: 0.9687 - f1_m: 0.9754 - precision_m: 0.9779 - recall_m: 0.9732
Epoch 21/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0731 - accuracy: 0.9689 - f1_m: 0.9754 - precision_m: 0.9781 - recall_m: 0.9731
Epoch 22/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0729 - accuracy: 0.9694 - f1_m: 0.9759 - precision_m: 0.9786 - recall_m: 0.9735
Epoch 23/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0723 - accuracy: 0.9695 - f1_m: 0.9759 - precision_m: 0.9787 - recall_m: 0.9735
Epoch 24/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0708 - accuracy: 0.9701 - f1_m: 0.9765 - precision_m: 0.9790 - recall_m: 0.9743
Epoch 25/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0699 - accuracy: 0.9707 - f1_m: 0.9769 - precision_m: 0.9798 - recall_m: 0.9743
Epoch 26/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0693 - accuracy: 0.9709 - f1_m: 0.9771 - precision_m: 0.9801 - recall_m: 0.9744
Epoch 27/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0694 - accuracy: 0.9709 - f1_m: 0.9770 - precision_m: 0.9800 - recall_m: 0.9744
Epoch 28/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0682 - accuracy: 0.9710 - f1_m: 0.9772 - precision_m: 0.9801 - recall_m: 0.9745
Epoch 29/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0669 - accuracy: 0.9717 - f1_m: 0.9777 - precision_m: 0.9810 - recall_m: 0.9748
Epoch 30/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0664 - accuracy: 0.9721 - f1_m: 0.9780 - precision_m: 0.9814 - recall_m: 0.9749
Epoch 31/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0661 - accuracy: 0.9720 - f1_m: 0.9778 - precision_m: 0.9810 - recall_m: 0.9750
Epoch 32/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0654 - accuracy: 0.9723 - f1_m: 0.9782 - precision_m: 0.9813 - recall_m: 0.9753
Epoch 33/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0640 - accuracy: 0.9730 - f1_m: 0.9787 - precision_m: 0.9819 - recall_m: 0.9759
Epoch 34/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0641 - accuracy: 0.9727 - f1_m: 0.9784 - precision_m: 0.9818 - recall_m: 0.9753
Epoch 35/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0640 - accuracy: 0.9727 - f1_m: 0.9785 - precision_m: 0.9817 - recall_m: 0.9756
Epoch 36/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0624 - accuracy: 0.9736 - f1_m: 0.9791 - precision_m: 0.9824 - recall_m: 0.9761
Epoch 37/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0630 - accuracy: 0.9735 - f1_m: 0.9791 - precision_m: 0.9821 - recall_m: 0.9764
Epoch 38/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0618 - accuracy: 0.9738 - f1_m: 0.9793 - precision_m: 0.9827 - recall_m: 0.9762
Epoch 39/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0617 - accuracy: 0.9738 - f1_m: 0.9793 - precision_m: 0.9826 - recall_m: 0.9764
Epoch 40/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0604 - accuracy: 0.9742 - f1_m: 0.9797 - precision_m: 0.9827 - recall_m: 0.9769
Epoch 41/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0607 - accuracy: 0.9743 - f1_m: 0.9797 - precision_m: 0.9830 - recall_m: 0.9768
Epoch 42/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0610 - accuracy: 0.9747 - f1_m: 0.9800 - precision_m: 0.9835 - recall_m: 0.9769
Epoch 43/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0595 - accuracy: 0.9747 - f1_m: 0.9801 - precision_m: 0.9835 - recall_m: 0.9769
Epoch 44/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0589 - accuracy: 0.9754 - f1_m: 0.9806 - precision_m: 0.9840 - recall_m: 0.9774
Epoch 45/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0584 - accuracy: 0.9754 - f1_m: 0.9806 - precision_m: 0.9839 - recall_m: 0.9775
Epoch 46/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0583 - accuracy: 0.9755 - f1_m: 0.9807 - precision_m: 0.9840 - recall_m: 0.9777
Epoch 47/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0578 - accuracy: 0.9755 - f1_m: 0.9807 - precision_m: 0.9839 - recall_m: 0.9777
Epoch 48/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0575 - accuracy: 0.9762 - f1_m: 0.9812 - precision_m: 0.9843 - recall_m: 0.9784
Epoch 49/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0565 - accuracy: 0.9763 - f1_m: 0.9813 - precision_m: 0.9846 - recall_m: 0.9783
Epoch 50/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0564 - accuracy: 0.9762 - f1_m: 0.9812 - precision_m: 0.9843 - recall_m: 0.9783
Epoch 51/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0568 - accuracy: 0.9761 - f1_m: 0.9812 - precision_m: 0.9842 - recall_m: 0.9784
Epoch 52/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0552 - accuracy: 0.9766 - f1_m: 0.9815 - precision_m: 0.9848 - recall_m: 0.9784
Epoch 53/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0558 - accuracy: 0.9764 - f1_m: 0.9814 - precision_m: 0.9848 - recall_m: 0.9782
Epoch 54/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0547 - accuracy: 0.9770 - f1_m: 0.9819 - precision_m: 0.9852 - recall_m: 0.9788
Epoch 55/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0548 - accuracy: 0.9769 - f1_m: 0.9818 - precision_m: 0.9849 - recall_m: 0.9790
Epoch 56/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0543 - accuracy: 0.9772 - f1_m: 0.9820 - precision_m: 0.9851 - recall_m: 0.9792
Epoch 57/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0547 - accuracy: 0.9771 - f1_m: 0.9819 - precision_m: 0.9849 - recall_m: 0.9792
Epoch 58/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0540 - accuracy: 0.9775 - f1_m: 0.9823 - precision_m: 0.9855 - recall_m: 0.9793
Epoch 59/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0534 - accuracy: 0.9776 - f1_m: 0.9823 - precision_m: 0.9853 - recall_m: 0.9795
Epoch 60/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0525 - accuracy: 0.9777 - f1_m: 0.9824 - precision_m: 0.9856 - recall_m: 0.9795
Epoch 61/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0524 - accuracy: 0.9777 - f1_m: 0.9825 - precision_m: 0.9856 - recall_m: 0.9795
Epoch 62/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0518 - accuracy: 0.9782 - f1_m: 0.9828 - precision_m: 0.9857 - recall_m: 0.9801
Epoch 63/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0525 - accuracy: 0.9782 - f1_m: 0.9828 - precision_m: 0.9860 - recall_m: 0.9799
Epoch 64/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0515 - accuracy: 0.9783 - f1_m: 0.9828 - precision_m: 0.9861 - recall_m: 0.9799
Epoch 65/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0516 - accuracy: 0.9785 - f1_m: 0.9830 - precision_m: 0.9861 - recall_m: 0.9802
Epoch 66/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0510 - accuracy: 0.9783 - f1_m: 0.9829 - precision_m: 0.9858 - recall_m: 0.9803
Epoch 67/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0505 - accuracy: 0.9787 - f1_m: 0.9832 - precision_m: 0.9866 - recall_m: 0.9801
Epoch 68/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0498 - accuracy: 0.9792 - f1_m: 0.9836 - precision_m: 0.9867 - recall_m: 0.9808
Epoch 69/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0496 - accuracy: 0.9789 - f1_m: 0.9833 - precision_m: 0.9863 - recall_m: 0.9805
Epoch 70/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0489 - accuracy: 0.9795 - f1_m: 0.9838 - precision_m: 0.9866 - recall_m: 0.9813
Epoch 71/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0491 - accuracy: 0.9794 - f1_m: 0.9837 - precision_m: 0.9869 - recall_m: 0.9809
Epoch 72/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0500 - accuracy: 0.9792 - f1_m: 0.9835 - precision_m: 0.9866 - recall_m: 0.9807
Epoch 73/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0482 - accuracy: 0.9793 - f1_m: 0.9837 - precision_m: 0.9866 - recall_m: 0.9810
Epoch 74/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0492 - accuracy: 0.9795 - f1_m: 0.9839 - precision_m: 0.9869 - recall_m: 0.9811
Epoch 75/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0480 - accuracy: 0.9798 - f1_m: 0.9841 - precision_m: 0.9873 - recall_m: 0.9812
Epoch 76/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0476 - accuracy: 0.9799 - f1_m: 0.9842 - precision_m: 0.9871 - recall_m: 0.9815
Epoch 77/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0486 - accuracy: 0.9794 - f1_m: 0.9837 - precision_m: 0.9867 - recall_m: 0.9809
Epoch 78/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0471 - accuracy: 0.9796 - f1_m: 0.9839 - precision_m: 0.9868 - recall_m: 0.9812
Epoch 79/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0474 - accuracy: 0.9800 - f1_m: 0.9843 - precision_m: 0.9870 - recall_m: 0.9817
Epoch 80/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0479 - accuracy: 0.9800 - f1_m: 0.9843 - precision_m: 0.9871 - recall_m: 0.9817
Epoch 81/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0468 - accuracy: 0.9808 - f1_m: 0.9849 - precision_m: 0.9876 - recall_m: 0.9823
Epoch 82/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0460 - accuracy: 0.9806 - f1_m: 0.9847 - precision_m: 0.9874 - recall_m: 0.9821
Epoch 83/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0454 - accuracy: 0.9808 - f1_m: 0.9849 - precision_m: 0.9878 - recall_m: 0.9822
Epoch 84/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0475 - accuracy: 0.9803 - f1_m: 0.9844 - precision_m: 0.9874 - recall_m: 0.9816
Epoch 85/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0457 - accuracy: 0.9810 - f1_m: 0.9850 - precision_m: 0.9879 - recall_m: 0.9824
Epoch 86/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0452 - accuracy: 0.9812 - f1_m: 0.9852 - precision_m: 0.9882 - recall_m: 0.9824
Epoch 87/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0454 - accuracy: 0.9810 - f1_m: 0.9850 - precision_m: 0.9878 - recall_m: 0.9824
Epoch 88/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0451 - accuracy: 0.9812 - f1_m: 0.9852 - precision_m: 0.9879 - recall_m: 0.9827
Epoch 89/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0445 - accuracy: 0.9813 - f1_m: 0.9853 - precision_m: 0.9882 - recall_m: 0.9825
Epoch 90/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0454 - accuracy: 0.9812 - f1_m: 0.9851 - precision_m: 0.9879 - recall_m: 0.9825
Epoch 91/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0435 - accuracy: 0.9818 - f1_m: 0.9857 - precision_m: 0.9888 - recall_m: 0.9828
Epoch 92/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0448 - accuracy: 0.9812 - f1_m: 0.9851 - precision_m: 0.9879 - recall_m: 0.9826
Epoch 93/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0442 - accuracy: 0.9817 - f1_m: 0.9855 - precision_m: 0.9885 - recall_m: 0.9828
Epoch 94/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0433 - accuracy: 0.9818 - f1_m: 0.9857 - precision_m: 0.9884 - recall_m: 0.9831
Epoch 95/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0432 - accuracy: 0.9820 - f1_m: 0.9858 - precision_m: 0.9885 - recall_m: 0.9833
Epoch 96/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0434 - accuracy: 0.9817 - f1_m: 0.9856 - precision_m: 0.9883 - recall_m: 0.9831
Epoch 97/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0426 - accuracy: 0.9822 - f1_m: 0.9860 - precision_m: 0.9888 - recall_m: 0.9835
Epoch 98/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0431 - accuracy: 0.9818 - f1_m: 0.9857 - precision_m: 0.9882 - recall_m: 0.9834
Epoch 99/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0420 - accuracy: 0.9821 - f1_m: 0.9858 - precision_m: 0.9884 - recall_m: 0.9835
Epoch 100/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0429 - accuracy: 0.9821 - f1_m: 0.9858 - precision_m: 0.9886 - recall_m: 0.9834
2658/2658 [==============================] - 2s 887us/step
2658/2658 [==============================] - 3s 1ms/step - loss: 0.0824 - accuracy: 0.9710 - f1_m: 0.9767 - precision_m: 0.9812 - recall_m: 0.9734
score on test: 0.971021294593811
5395/5395 [==============================] - 6s 1ms/step - loss: 0.0362 - accuracy: 0.9849 - f1_m: 0.9879 - precision_m: 0.9920 - recall_m: 0.9844
score on train: 0.9849099516868591
In [ ]:
from sklearn.metrics import auc
fpr_keras, tpr_keras, thresholds_keras = roc_curve(y_test, y_pred)
auc_keras = auc(fpr_keras, tpr_keras)
plt.plot([0, 1], [0, 1], 'k--')
plt.plot(fpr_keras, tpr_keras, label='Keras (area = {:.3f})'.format(auc_keras))
plt.xlabel('False positive rate')
plt.ylabel('True positive rate')
plt.title('ROC curve')
plt.legend(loc='best')
plt.show()
In [ ]:
dtree1 = DecisionTreeClassifier(max_depth = 10).fit(X_train_mod4, y_multi_train)
y_pred = dtree1.predict(X_test)
print("score on test: " + str(dtree1.score(X_test, y_multi_test)))
print("score on train: "+ str(dtree1.score(X_train_mod4, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_tree['4']=acc
score on test: 0.805040692477772
score on train: 0.8268840873544575
              precision    recall  f1-score   support

           0       0.90      0.94      0.92     30772
           1       0.98      0.96      0.97     19423
           2       0.59      0.83      0.69     14709
           3       0.69      0.59      0.63      7921
           4       0.44      0.13      0.20      5357
           5       0.68      0.72      0.70      4578
           6       0.69      0.02      0.05       909
           7       0.16      0.02      0.03       780
           8       0.00      0.00      0.00       513
           9       0.00      0.00      0.00        66

    accuracy                           0.81     85028
   macro avg       0.51      0.42      0.42     85028
weighted avg       0.79      0.81      0.78     85028

/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
In [ ]:
plot_ROC_curve(dtree1, X_train_mod4, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for DecisionTreeClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=DecisionTreeClassifier(max_depth=10))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for DecisionTreeClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=DecisionTreeClassifier(max_depth=10))
DecisionTreeClassifier(max_depth=10)
DecisionTreeClassifier(max_depth=10)
In [ ]:
rf2 = RandomForestClassifier(n_estimators=30, max_depth=10).fit(X_train_mod4, y_multi_train)
y_pred = rf2.predict(X_test)
print("score on test: " + str(rf2.score(X_test, y_multi_test)))
print("score on train: "+ str(rf2.score(X_train_mod4, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
accuracy = rf2.score(X_test, y_multi_test)
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_rf_m['4']=acc
<ipython-input-70-7575b483ca04>:1: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().
  rf2 = RandomForestClassifier(n_estimators=30, max_depth=10).fit(X_train_mod4, y_multi_train)
score on test: 0.7454603189537564
score on train: 0.8181544343393384
              precision    recall  f1-score   support

           0       0.67      0.97      0.79     30772
           1       1.00      0.96      0.98     19423
           2       0.65      0.69      0.67     14709
           3       0.73      0.44      0.55      7921
           4       0.84      0.01      0.01      5357
           5       0.82      0.31      0.45      4578
           6       1.00      0.00      0.00       909
           7       1.00      0.00      0.01       780
           8       0.00      0.00      0.00       513
           9       0.00      0.00      0.00        66

    accuracy                           0.75     85028
   macro avg       0.67      0.34      0.35     85028
weighted avg       0.77      0.75      0.70     85028

/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
In [ ]:
plot_ROC_curve(rf2, X_train_mod4, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for RandomForestClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=RandomForestClassifier(max_depth=10, n_estimators=30))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for RandomForestClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=RandomForestClassifier(max_depth=10, n_estimators=30))
RandomForestClassifier(max_depth=10, n_estimators=30)
RandomForestClassifier(max_depth=10, n_estimators=30)
In [ ]:
xgb2 = xgb.XGBClassifier(objective="multi:softprob", random_state=42)
xgb2.fit(X_train_mod4, y_multi_train)
y_pred = xgb2.predict(X_test)
print("score on test: " + str(xgb2.score(X_test, y_multi_test)))
print("score on train: "+ str(xgb2.score(X_train_mod4, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_xgb_m['4']=acc
score on test: 0.8540010349531919
score on train: 0.9088107513178474
              precision    recall  f1-score   support

           0       0.95      0.98      0.96     30772
           1       1.00      0.98      0.99     19423
           2       0.69      0.78      0.73     14709
           3       0.78      0.79      0.79      7921
           4       0.39      0.38      0.39      5357
           5       0.88      0.77      0.82      4578
           6       0.65      0.11      0.19       909
           7       0.69      0.08      0.14       780
           8       0.69      0.33      0.44       513
           9       0.64      0.11      0.18        66

    accuracy                           0.85     85028
   macro avg       0.74      0.53      0.56     85028
weighted avg       0.85      0.85      0.85     85028

In [ ]:
plot_ROC_curve(xgb2, X_train_mod4, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for XGBClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=XGBClassifier(base_score=None, booster=None, callbacks=None,
                               colsample_bylevel=None, colsample_bynode=None,
                               colsample_bytree=None,
                               early_stopping_rounds=None,
                               enable_categorical=False, eval_metric=None,
                               feature_types=None, gamma=None, g...
                               grow_policy=None, importance_type=None,
                               interaction_constraints=None, learning_rate=None,
                               max_bin=None, max_cat_threshold=None,
                               max_cat_to_onehot=None, max_delta_step=None,
                               max_depth=None, max_leaves=None,
                               min_child_weight=None, missing=nan,
                               monotone_constraints=None, n_estimators=100,
                               n_jobs=None, num_parallel_tree=None,
                               objective='multi:softprob', predictor=None, ...))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for XGBClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=XGBClassifier(base_score=None, booster=None, callbacks=None,
                               colsample_bylevel=None, colsample_bynode=None,
                               colsample_bytree=None,
                               early_stopping_rounds=None,
                               enable_categorical=False, eval_metric=None,
                               feature_types=None, gamma=None, g...
                               grow_policy=None, importance_type=None,
                               interaction_constraints=None, learning_rate=None,
                               max_bin=None, max_cat_threshold=None,
                               max_cat_to_onehot=None, max_delta_step=None,
                               max_depth=None, max_leaves=None,
                               min_child_weight=None, missing=nan,
                               monotone_constraints=None, n_estimators=100,
                               n_jobs=None, num_parallel_tree=None,
                               objective='multi:softprob', predictor=None, ...))
XGBClassifier(base_score=None, booster=None, callbacks=None,
              colsample_bylevel=None, colsample_bynode=None,
              colsample_bytree=None, early_stopping_rounds=None,
              enable_categorical=False, eval_metric=None, feature_types=None,
              gamma=None, gpu_id=None, grow_policy=None, importance_type=None,
              interaction_constraints=None, learning_rate=None, max_bin=None,
              max_cat_threshold=None, max_cat_to_onehot=None,
              max_delta_step=None, max_depth=None, max_leaves=None,
              min_child_weight=None, missing=nan, monotone_constraints=None,
              n_estimators=100, n_jobs=None, num_parallel_tree=None,
              objective='multi:softprob', predictor=None, ...)
XGBClassifier(base_score=None, booster=None, callbacks=None,
              colsample_bylevel=None, colsample_bynode=None,
              colsample_bytree=None, early_stopping_rounds=None,
              enable_categorical=False, eval_metric=None, feature_types=None,
              gamma=None, gpu_id=None, grow_policy=None, importance_type=None,
              interaction_constraints=None, learning_rate=None, max_bin=None,
              max_cat_threshold=None, max_cat_to_onehot=None,
              max_delta_step=None, max_depth=None, max_leaves=None,
              min_child_weight=None, missing=nan, monotone_constraints=None,
              n_estimators=100, n_jobs=None, num_parallel_tree=None,
              objective='multi:softprob', predictor=None, ...)
In [ ]:
model2 = models.Sequential()
model2.add(layers.Dense(128, input_shape = (42,), activation = "relu"))
model2.add(layers.Dense(64, activation = "relu"))
model2.add(layers.Dense(64,activation="relu"))
model2.add(layers.Dense(10, activation = "softmax"))
model2.compile(optimizer='adam', loss="sparse_categorical_crossentropy", metrics = ["accuracy", f1_m, precision_m, recall_m])
model2.summary()

earlystopping = callbacks.EarlyStopping(monitor="loss",
                                        mode="min", patience=5,
                                        restore_best_weights=True)

model2.fit(X_train_mod4,y_multi_train,epochs=100,batch_size=128,callbacks=[earlystopping])
y_pred_arr = model2.predict(X_test)
y_pred = []
for el in y_pred_arr:
    ind = np.argmax(el)
    y_pred.append(ind)
scores=model2.evaluate(X_test, y_multi_test, verbose=0)
res_nn_m['4']=scores[1]
print("score on test: " + str(model2.evaluate(X_test,y_multi_test)[1]))
print("score on train: "+ str(model2.evaluate(X_train_mod4,y_multi_train)[1]))
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
Model: "sequential_7"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense_28 (Dense)            (None, 128)               5504      
                                                                 
 dense_29 (Dense)            (None, 64)                8256      
                                                                 
 dense_30 (Dense)            (None, 64)                4160      
                                                                 
 dense_31 (Dense)            (None, 10)                650       
                                                                 
=================================================================
Total params: 18,570
Trainable params: 18,570
Non-trainable params: 0
_________________________________________________________________
Epoch 1/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.8790 - accuracy: 0.6797 - f1_m: 1.7411 - precision_m: 1104522.0000 - recall_m: 1.7011
Epoch 2/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.6861 - accuracy: 0.7446 - f1_m: 1.5584 - precision_m: 1.4889 - recall_m: 1.6441
Epoch 3/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.6172 - accuracy: 0.7692 - f1_m: 1.4678 - precision_m: 1.3604 - recall_m: 1.6017
Epoch 4/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5768 - accuracy: 0.7834 - f1_m: 1.4071 - precision_m: 1.2841 - recall_m: 1.5638
Epoch 5/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5521 - accuracy: 0.7918 - f1_m: 1.3691 - precision_m: 1.2396 - recall_m: 1.5359
Epoch 6/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5342 - accuracy: 0.7979 - f1_m: 1.3445 - precision_m: 1.2113 - recall_m: 1.5176
Epoch 7/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5210 - accuracy: 0.8031 - f1_m: 1.3300 - precision_m: 1.1936 - recall_m: 1.5085
Epoch 8/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5067 - accuracy: 0.8082 - f1_m: 1.3147 - precision_m: 1.1768 - recall_m: 1.4959
Epoch 9/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4923 - accuracy: 0.8135 - f1_m: 1.2981 - precision_m: 1.1575 - recall_m: 1.4842
Epoch 10/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4782 - accuracy: 0.8191 - f1_m: 1.2821 - precision_m: 1.1388 - recall_m: 1.4733
Epoch 11/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4681 - accuracy: 0.8229 - f1_m: 1.2708 - precision_m: 1.1272 - recall_m: 1.4627
Epoch 12/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4594 - accuracy: 0.8259 - f1_m: 1.2622 - precision_m: 1.1173 - recall_m: 1.4564
Epoch 13/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4529 - accuracy: 0.8274 - f1_m: 1.2550 - precision_m: 1.1087 - recall_m: 1.4520
Epoch 14/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4484 - accuracy: 0.8304 - f1_m: 1.2514 - precision_m: 1.1049 - recall_m: 1.4494
Epoch 15/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4438 - accuracy: 0.8306 - f1_m: 1.2454 - precision_m: 1.0984 - recall_m: 1.4444
Epoch 16/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4399 - accuracy: 0.8316 - f1_m: 1.2447 - precision_m: 1.0973 - recall_m: 1.4438
Epoch 17/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4375 - accuracy: 0.8327 - f1_m: 1.2438 - precision_m: 1.0969 - recall_m: 1.4424
Epoch 18/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4349 - accuracy: 0.8338 - f1_m: 1.2386 - precision_m: 1.0906 - recall_m: 1.4392
Epoch 19/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.4301 - accuracy: 0.8349 - f1_m: 1.2396 - precision_m: 1.0914 - recall_m: 1.4403
Epoch 20/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4288 - accuracy: 0.8357 - f1_m: 1.2363 - precision_m: 1.0875 - recall_m: 1.4379
Epoch 21/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4266 - accuracy: 0.8361 - f1_m: 1.2368 - precision_m: 1.0884 - recall_m: 1.4385
Epoch 22/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4244 - accuracy: 0.8367 - f1_m: 1.2338 - precision_m: 1.0848 - recall_m: 1.4361
Epoch 23/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4220 - accuracy: 0.8373 - f1_m: 1.2324 - precision_m: 1.0835 - recall_m: 1.4351
Epoch 24/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4207 - accuracy: 0.8386 - f1_m: 1.2296 - precision_m: 1.0808 - recall_m: 1.4324
Epoch 25/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4179 - accuracy: 0.8392 - f1_m: 1.2290 - precision_m: 1.0799 - recall_m: 1.4316
Epoch 26/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4177 - accuracy: 0.8388 - f1_m: 1.2289 - precision_m: 1.0791 - recall_m: 1.4328
Epoch 27/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4157 - accuracy: 0.8399 - f1_m: 1.2280 - precision_m: 1.0780 - recall_m: 1.4323
Epoch 28/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4130 - accuracy: 0.8413 - f1_m: 1.2274 - precision_m: 1.0780 - recall_m: 1.4306
Epoch 29/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.4116 - accuracy: 0.8408 - f1_m: 1.2253 - precision_m: 1.0751 - recall_m: 1.4301
Epoch 30/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4093 - accuracy: 0.8411 - f1_m: 1.2245 - precision_m: 1.0739 - recall_m: 1.4298
Epoch 31/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4084 - accuracy: 0.8419 - f1_m: 1.2229 - precision_m: 1.0721 - recall_m: 1.4286
Epoch 32/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4070 - accuracy: 0.8423 - f1_m: 1.2217 - precision_m: 1.0704 - recall_m: 1.4285
Epoch 33/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4054 - accuracy: 0.8428 - f1_m: 1.2206 - precision_m: 1.0690 - recall_m: 1.4279
Epoch 34/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4040 - accuracy: 0.8441 - f1_m: 1.2206 - precision_m: 1.0700 - recall_m: 1.4263
Epoch 35/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4029 - accuracy: 0.8443 - f1_m: 1.2181 - precision_m: 1.0669 - recall_m: 1.4249
Epoch 36/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4014 - accuracy: 0.8453 - f1_m: 1.2181 - precision_m: 1.0672 - recall_m: 1.4247
Epoch 37/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3998 - accuracy: 0.8452 - f1_m: 1.2165 - precision_m: 1.0650 - recall_m: 1.4239
Epoch 38/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3992 - accuracy: 0.8452 - f1_m: 1.2169 - precision_m: 1.0650 - recall_m: 1.4255
Epoch 39/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3977 - accuracy: 0.8460 - f1_m: 1.2166 - precision_m: 1.0644 - recall_m: 1.4253
Epoch 40/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3969 - accuracy: 0.8466 - f1_m: 1.2135 - precision_m: 1.0616 - recall_m: 1.4220
Epoch 41/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3956 - accuracy: 0.8463 - f1_m: 1.2151 - precision_m: 1.0634 - recall_m: 1.4228
Epoch 42/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3941 - accuracy: 0.8469 - f1_m: 1.2131 - precision_m: 1.0610 - recall_m: 1.4223
Epoch 43/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3941 - accuracy: 0.8470 - f1_m: 1.2115 - precision_m: 1.0591 - recall_m: 1.4211
Epoch 44/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3922 - accuracy: 0.8478 - f1_m: 1.2141 - precision_m: 1.0619 - recall_m: 1.4227
Epoch 45/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3910 - accuracy: 0.8476 - f1_m: 1.2105 - precision_m: 1.0576 - recall_m: 1.4210
Epoch 46/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3914 - accuracy: 0.8479 - f1_m: 1.2103 - precision_m: 1.0582 - recall_m: 1.4194
Epoch 47/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3883 - accuracy: 0.8489 - f1_m: 1.2106 - precision_m: 1.0581 - recall_m: 1.4200
Epoch 48/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3893 - accuracy: 0.8490 - f1_m: 1.2110 - precision_m: 1.0577 - recall_m: 1.4216
Epoch 49/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3874 - accuracy: 0.8496 - f1_m: 1.2102 - precision_m: 1.0583 - recall_m: 1.4190
Epoch 50/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3876 - accuracy: 0.8486 - f1_m: 1.2109 - precision_m: 1.0582 - recall_m: 1.4207
Epoch 51/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3872 - accuracy: 0.8492 - f1_m: 1.2095 - precision_m: 1.0566 - recall_m: 1.4198
Epoch 52/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3862 - accuracy: 0.8501 - f1_m: 1.2096 - precision_m: 1.0574 - recall_m: 1.4190
Epoch 53/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3828 - accuracy: 0.8510 - f1_m: 1.2060 - precision_m: 1.0531 - recall_m: 1.4166
Epoch 54/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3836 - accuracy: 0.8503 - f1_m: 1.2075 - precision_m: 1.0544 - recall_m: 1.4187
Epoch 55/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3828 - accuracy: 0.8505 - f1_m: 1.2069 - precision_m: 1.0542 - recall_m: 1.4173
Epoch 56/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3821 - accuracy: 0.8514 - f1_m: 1.2049 - precision_m: 1.0520 - recall_m: 1.4158
Epoch 57/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3810 - accuracy: 0.8514 - f1_m: 1.2065 - precision_m: 1.0537 - recall_m: 1.4168
Epoch 58/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3806 - accuracy: 0.8513 - f1_m: 1.2064 - precision_m: 1.0536 - recall_m: 1.4169
Epoch 59/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3791 - accuracy: 0.8520 - f1_m: 1.2035 - precision_m: 1.0500 - recall_m: 1.4151
Epoch 60/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3784 - accuracy: 0.8525 - f1_m: 1.2071 - precision_m: 1.0541 - recall_m: 1.4180
Epoch 61/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3792 - accuracy: 0.8514 - f1_m: 1.2039 - precision_m: 1.0507 - recall_m: 1.4153
Epoch 62/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3778 - accuracy: 0.8527 - f1_m: 1.2028 - precision_m: 1.0494 - recall_m: 1.4143
Epoch 63/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3777 - accuracy: 0.8528 - f1_m: 1.2020 - precision_m: 1.0477 - recall_m: 1.4155
Epoch 64/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3768 - accuracy: 0.8526 - f1_m: 1.2046 - precision_m: 1.0510 - recall_m: 1.4165
Epoch 65/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3758 - accuracy: 0.8528 - f1_m: 1.2019 - precision_m: 1.0486 - recall_m: 1.4135
Epoch 66/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3749 - accuracy: 0.8529 - f1_m: 1.2019 - precision_m: 1.0486 - recall_m: 1.4136
Epoch 67/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3750 - accuracy: 0.8528 - f1_m: 1.2008 - precision_m: 1.0470 - recall_m: 1.4129
Epoch 68/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3746 - accuracy: 0.8535 - f1_m: 1.2024 - precision_m: 1.0483 - recall_m: 1.4151
Epoch 69/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3729 - accuracy: 0.8543 - f1_m: 1.1997 - precision_m: 1.0461 - recall_m: 1.4121
Epoch 70/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3733 - accuracy: 0.8536 - f1_m: 1.2013 - precision_m: 1.0478 - recall_m: 1.4133
Epoch 71/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3722 - accuracy: 0.8541 - f1_m: 1.1997 - precision_m: 1.0454 - recall_m: 1.4127
Epoch 72/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3718 - accuracy: 0.8542 - f1_m: 1.1980 - precision_m: 1.0442 - recall_m: 1.4107
Epoch 73/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3730 - accuracy: 0.8536 - f1_m: 1.2004 - precision_m: 1.0460 - recall_m: 1.4140
Epoch 74/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3703 - accuracy: 0.8542 - f1_m: 1.2002 - precision_m: 1.0465 - recall_m: 1.4129
Epoch 75/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3702 - accuracy: 0.8548 - f1_m: 1.2013 - precision_m: 1.0483 - recall_m: 1.4123
Epoch 76/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3690 - accuracy: 0.8555 - f1_m: 1.1980 - precision_m: 1.0440 - recall_m: 1.4107
Epoch 77/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3693 - accuracy: 0.8555 - f1_m: 1.1971 - precision_m: 1.0435 - recall_m: 1.4094
Epoch 78/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3680 - accuracy: 0.8558 - f1_m: 1.1981 - precision_m: 1.0432 - recall_m: 1.4125
Epoch 79/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3684 - accuracy: 0.8548 - f1_m: 1.1977 - precision_m: 1.0438 - recall_m: 1.4107
Epoch 80/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3680 - accuracy: 0.8554 - f1_m: 1.1987 - precision_m: 1.0450 - recall_m: 1.4111
Epoch 81/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3671 - accuracy: 0.8557 - f1_m: 1.1990 - precision_m: 1.0453 - recall_m: 1.4115
Epoch 82/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3662 - accuracy: 0.8563 - f1_m: 1.1978 - precision_m: 1.0444 - recall_m: 1.4094
Epoch 83/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3658 - accuracy: 0.8568 - f1_m: 1.1948 - precision_m: 1.0408 - recall_m: 1.4078
Epoch 84/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3649 - accuracy: 0.8568 - f1_m: 1.1967 - precision_m: 1.0424 - recall_m: 1.4099
Epoch 85/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3651 - accuracy: 0.8565 - f1_m: 1.1961 - precision_m: 1.0417 - recall_m: 1.4101
Epoch 86/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3651 - accuracy: 0.8572 - f1_m: 1.1939 - precision_m: 1.0396 - recall_m: 1.4074
Epoch 87/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3636 - accuracy: 0.8569 - f1_m: 1.1938 - precision_m: 1.0394 - recall_m: 1.4074
Epoch 88/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3631 - accuracy: 0.8573 - f1_m: 1.1951 - precision_m: 1.0411 - recall_m: 1.4085
Epoch 89/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3636 - accuracy: 0.8573 - f1_m: 1.1944 - precision_m: 1.0400 - recall_m: 1.4078
Epoch 90/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3629 - accuracy: 0.8574 - f1_m: 1.1927 - precision_m: 1.0384 - recall_m: 1.4066
Epoch 91/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3633 - accuracy: 0.8572 - f1_m: 1.1939 - precision_m: 1.0394 - recall_m: 1.4079
Epoch 92/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3609 - accuracy: 0.8584 - f1_m: 1.1927 - precision_m: 1.0382 - recall_m: 1.4069
Epoch 93/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3624 - accuracy: 0.8576 - f1_m: 1.1925 - precision_m: 1.0383 - recall_m: 1.4061
Epoch 94/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3610 - accuracy: 0.8579 - f1_m: 1.1928 - precision_m: 1.0384 - recall_m: 1.4070
Epoch 95/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3599 - accuracy: 0.8583 - f1_m: 1.1927 - precision_m: 1.0385 - recall_m: 1.4065
Epoch 96/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3598 - accuracy: 0.8585 - f1_m: 1.1917 - precision_m: 1.0373 - recall_m: 1.4056
Epoch 97/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3597 - accuracy: 0.8578 - f1_m: 1.1946 - precision_m: 1.0398 - recall_m: 1.4090
Epoch 98/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3597 - accuracy: 0.8582 - f1_m: 1.1906 - precision_m: 1.0357 - recall_m: 1.4055
Epoch 99/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3586 - accuracy: 0.8591 - f1_m: 1.1914 - precision_m: 1.0366 - recall_m: 1.4061
Epoch 100/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3587 - accuracy: 0.8589 - f1_m: 1.1915 - precision_m: 1.0364 - recall_m: 1.4066
2658/2658 [==============================] - 2s 903us/step
2658/2658 [==============================] - 3s 1ms/step - loss: 0.4199 - accuracy: 0.8460 - f1_m: 1.1838 - precision_m: 1.0410 - recall_m: 1.3941
score on test: 0.8460271954536438
5395/5395 [==============================] - 7s 1ms/step - loss: 0.3551 - accuracy: 0.8600 - f1_m: 1.1890 - precision_m: 1.0446 - recall_m: 1.4020
score on train: 0.8600416779518127
In [ ]:
fig, c_ax = plt.subplots(1,1, figsize = (12, 8))
print('ROC AUC score:', multiclass_roc_auc_score(y_multi_test, y_pred))

c_ax.legend()
c_ax.set_xlabel('False Positive Rate')
c_ax.set_ylabel('True Positive Rate')
plt.show()
ROC AUC score: 0.7593989598872701

Noise range 2.5

In [ ]:
noise5 = 5
X_train_mod5 = modify_dataset(X_train, variables_to_poison, noise5)

X_train_mod5
Out[ ]:
array([[ 1.79214449, -0.2082886 ,  4.79472788, ..., -1.0619848 ,
         4.05578695, -0.12070382],
       [-0.57638416,  1.78686151, -0.21788858, ..., -2.81272213,
        -5.94086682, -0.12070382],
       [-1.0569863 , -0.20828827, -9.28511035, ...,  2.29888573,
        -3.32639488, -0.12070382],
       ...,
       [-0.47187522, -0.06694436,  1.08694708, ..., -5.93883527,
        -4.81004228, -0.12070382],
       [-0.1666061 , -0.18783648, -2.869486  , ...,  9.93929494,
         4.69624051, -0.12070382],
       [-0.6757627 , -0.20011705,  4.21417205, ...,  2.68682551,
        -2.92994458, -0.12070382]])
In [ ]:
from sklearn import metrics
from sklearn.metrics import (confusion_matrix, accuracy_score, precision_score, recall_score, f1_score)
lr1=LogisticRegression()
lr1.fit(X_train_mod5, y_train)
y_pred = lr1.predict(X_test)
print("score on test: " + str(lr1.score(X_test, y_test)))
print("score on train: "+ str(lr1.score(X_train_mod5, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_log['5']=acc
/usr/local/lib/python3.10/dist-packages/sklearn/utils/validation.py:1143: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)
/usr/local/lib/python3.10/dist-packages/sklearn/linear_model/_logistic.py:458: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
    https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
  n_iter_i = _check_optimize_result(
score on test: 0.8921178905772216
score on train: 0.8928633493599026
              precision    recall  f1-score   support

           0       0.93      0.76      0.84     30772
           1       0.88      0.97      0.92     54256

    accuracy                           0.89     85028
   macro avg       0.90      0.86      0.88     85028
weighted avg       0.90      0.89      0.89     85028

In [ ]:
# ROC curve and AUC
lr1_predproba = lr1.predict_proba(X_test)[:, 1]
AUC_lr1 = roc_auc_score(y_test, lr1_predproba)
print(f'AUC: {AUC_lr1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, lr1_predproba)
plt.plot(fpr, tpr, label='logistic regression Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9534
In [ ]:
rf1 = RandomForestClassifier(n_estimators=30, max_depth=10)
rf1.fit(X_train_mod5, y_train)
y_pred = rf1.predict(X_test)
print("score on test: " + str(rf1.score(X_test, y_test)))
print("score on train: "+ str(rf1.score(X_train_mod5, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_rf_b['5']=acc
<ipython-input-79-9b10e58482f5>:2: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().
  rf1.fit(X_train_mod5, y_train)
score on test: 0.8765347885402456
score on train: 0.9476858020042866
              precision    recall  f1-score   support

           0       0.78      0.93      0.84     30772
           1       0.95      0.85      0.90     54256

    accuracy                           0.88     85028
   macro avg       0.86      0.89      0.87     85028
weighted avg       0.89      0.88      0.88     85028

In [ ]:
rf1_predproba = rf1.predict_proba(X_test)[:, 1]
AUC_rf1 = roc_auc_score(y_test, rf1_predproba)
print(f'AUC: {AUC_rf1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, rf1_predproba)
plt.plot(fpr, tpr, label='random forest Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9708
In [ ]:
xgb1 = xgb.XGBClassifier(objective="binary:logistic", random_state=42)
xgb1.fit(X_train_mod5, y_train)
y_pred = xgb1.predict(X_test)
print("score on test: " + str(xgb1.score(X_test, y_test)))
print("score on train: "+ str(xgb1.score(X_train_mod5, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_xgb_b['5']=acc
score on test: 0.9703509432187044
score on train: 0.991884376991253
              precision    recall  f1-score   support

           0       0.97      0.95      0.96     30772
           1       0.97      0.98      0.98     54256

    accuracy                           0.97     85028
   macro avg       0.97      0.97      0.97     85028
weighted avg       0.97      0.97      0.97     85028

In [ ]:
# ROC curve and AUC
xgb1_predproba = xgb1.predict_proba(X_test)[:, 1]
AUC_xgb1 = roc_auc_score(y_test, xgb1_predproba)
print(f'AUC: {AUC_xgb1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, xgb1_predproba)
plt.plot(fpr, tpr, label='Gradient boosting Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9962
In [ ]:
model=models.Sequential()
model.add(layers.Dense(128,activation='relu',input_shape=(42,)))
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(1,activation='sigmoid'))
model.summary

model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy', f1_m, precision_m, recall_m])

earlystopping = callbacks.EarlyStopping(monitor="loss",
                                        mode="min", patience=5,
                                        restore_best_weights=True)
model.fit(X_train_mod5, y_train, batch_size=128, epochs=100, callbacks=[earlystopping])

y_pred = model.predict(X_test)
print("score on test: " + str(model.evaluate(X_test,y_test)[1]))
print("score on train: "+ str(model.evaluate(X_train_mod5,y_train)[1]))
loss, accuracy, f1_score, precision, recall = model.evaluate(X_test, y_test, verbose=0)
scores=model.evaluate(X_test, y_test, verbose=0)
res_nn_b['5']=scores[1]
from sklearn import metrics
y_pred_mat = y_pred.round()
confusion_matrix = metrics.confusion_matrix(y_test, y_pred_mat)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
Epoch 1/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.2658 - accuracy: 0.8803 - f1_m: 0.9100 - precision_m: 0.8756 - recall_m: 0.9487
Epoch 2/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.2024 - accuracy: 0.9059 - f1_m: 0.9280 - precision_m: 0.9051 - recall_m: 0.9531
Epoch 3/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1791 - accuracy: 0.9160 - f1_m: 0.9350 - precision_m: 0.9217 - recall_m: 0.9497
Epoch 4/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1621 - accuracy: 0.9240 - f1_m: 0.9408 - precision_m: 0.9324 - recall_m: 0.9503
Epoch 5/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1491 - accuracy: 0.9313 - f1_m: 0.9462 - precision_m: 0.9411 - recall_m: 0.9522
Epoch 6/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1392 - accuracy: 0.9380 - f1_m: 0.9514 - precision_m: 0.9484 - recall_m: 0.9550
Epoch 7/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1260 - accuracy: 0.9449 - f1_m: 0.9567 - precision_m: 0.9557 - recall_m: 0.9584
Epoch 8/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1117 - accuracy: 0.9522 - f1_m: 0.9624 - precision_m: 0.9622 - recall_m: 0.9633
Epoch 9/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1011 - accuracy: 0.9568 - f1_m: 0.9661 - precision_m: 0.9659 - recall_m: 0.9667
Epoch 10/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0957 - accuracy: 0.9593 - f1_m: 0.9679 - precision_m: 0.9681 - recall_m: 0.9683
Epoch 11/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0914 - accuracy: 0.9612 - f1_m: 0.9695 - precision_m: 0.9703 - recall_m: 0.9690
Epoch 12/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0890 - accuracy: 0.9624 - f1_m: 0.9704 - precision_m: 0.9716 - recall_m: 0.9697
Epoch 13/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0868 - accuracy: 0.9633 - f1_m: 0.9711 - precision_m: 0.9722 - recall_m: 0.9706
Epoch 14/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0843 - accuracy: 0.9644 - f1_m: 0.9719 - precision_m: 0.9737 - recall_m: 0.9705
Epoch 15/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0823 - accuracy: 0.9653 - f1_m: 0.9726 - precision_m: 0.9743 - recall_m: 0.9713
Epoch 16/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0812 - accuracy: 0.9658 - f1_m: 0.9731 - precision_m: 0.9752 - recall_m: 0.9714
Epoch 17/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0794 - accuracy: 0.9664 - f1_m: 0.9735 - precision_m: 0.9757 - recall_m: 0.9718
Epoch 18/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0777 - accuracy: 0.9668 - f1_m: 0.9738 - precision_m: 0.9762 - recall_m: 0.9719
Epoch 19/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0763 - accuracy: 0.9675 - f1_m: 0.9744 - precision_m: 0.9770 - recall_m: 0.9721
Epoch 20/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0759 - accuracy: 0.9677 - f1_m: 0.9745 - precision_m: 0.9772 - recall_m: 0.9722
Epoch 21/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0741 - accuracy: 0.9681 - f1_m: 0.9749 - precision_m: 0.9773 - recall_m: 0.9728
Epoch 22/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0736 - accuracy: 0.9685 - f1_m: 0.9752 - precision_m: 0.9778 - recall_m: 0.9729
Epoch 23/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0730 - accuracy: 0.9692 - f1_m: 0.9757 - precision_m: 0.9786 - recall_m: 0.9732
Epoch 24/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0720 - accuracy: 0.9695 - f1_m: 0.9759 - precision_m: 0.9786 - recall_m: 0.9737
Epoch 25/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0709 - accuracy: 0.9700 - f1_m: 0.9763 - precision_m: 0.9792 - recall_m: 0.9737
Epoch 26/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0702 - accuracy: 0.9703 - f1_m: 0.9766 - precision_m: 0.9796 - recall_m: 0.9738
Epoch 27/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0698 - accuracy: 0.9704 - f1_m: 0.9766 - precision_m: 0.9796 - recall_m: 0.9740
Epoch 28/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0687 - accuracy: 0.9713 - f1_m: 0.9773 - precision_m: 0.9800 - recall_m: 0.9750
Epoch 29/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0676 - accuracy: 0.9715 - f1_m: 0.9775 - precision_m: 0.9805 - recall_m: 0.9749
Epoch 30/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0675 - accuracy: 0.9713 - f1_m: 0.9773 - precision_m: 0.9803 - recall_m: 0.9746
Epoch 31/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0661 - accuracy: 0.9722 - f1_m: 0.9781 - precision_m: 0.9811 - recall_m: 0.9753
Epoch 32/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0661 - accuracy: 0.9717 - f1_m: 0.9776 - precision_m: 0.9805 - recall_m: 0.9751
Epoch 33/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0652 - accuracy: 0.9723 - f1_m: 0.9781 - precision_m: 0.9813 - recall_m: 0.9753
Epoch 34/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0650 - accuracy: 0.9724 - f1_m: 0.9782 - precision_m: 0.9814 - recall_m: 0.9753
Epoch 35/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0635 - accuracy: 0.9732 - f1_m: 0.9789 - precision_m: 0.9820 - recall_m: 0.9761
Epoch 36/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0627 - accuracy: 0.9735 - f1_m: 0.9791 - precision_m: 0.9825 - recall_m: 0.9760
Epoch 37/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0632 - accuracy: 0.9731 - f1_m: 0.9788 - precision_m: 0.9820 - recall_m: 0.9759
Epoch 38/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0620 - accuracy: 0.9741 - f1_m: 0.9796 - precision_m: 0.9824 - recall_m: 0.9770
Epoch 39/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0614 - accuracy: 0.9740 - f1_m: 0.9795 - precision_m: 0.9823 - recall_m: 0.9769
Epoch 40/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0617 - accuracy: 0.9739 - f1_m: 0.9794 - precision_m: 0.9821 - recall_m: 0.9771
Epoch 41/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0609 - accuracy: 0.9739 - f1_m: 0.9794 - precision_m: 0.9824 - recall_m: 0.9766
Epoch 42/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0601 - accuracy: 0.9746 - f1_m: 0.9800 - precision_m: 0.9828 - recall_m: 0.9775
Epoch 43/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0593 - accuracy: 0.9746 - f1_m: 0.9800 - precision_m: 0.9830 - recall_m: 0.9772
Epoch 44/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0589 - accuracy: 0.9751 - f1_m: 0.9803 - precision_m: 0.9831 - recall_m: 0.9778
Epoch 45/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0586 - accuracy: 0.9752 - f1_m: 0.9804 - precision_m: 0.9832 - recall_m: 0.9779
Epoch 46/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0584 - accuracy: 0.9751 - f1_m: 0.9804 - precision_m: 0.9833 - recall_m: 0.9778
Epoch 47/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0575 - accuracy: 0.9757 - f1_m: 0.9809 - precision_m: 0.9837 - recall_m: 0.9783
Epoch 48/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0576 - accuracy: 0.9758 - f1_m: 0.9809 - precision_m: 0.9837 - recall_m: 0.9784
Epoch 49/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0571 - accuracy: 0.9758 - f1_m: 0.9809 - precision_m: 0.9840 - recall_m: 0.9781
Epoch 50/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0557 - accuracy: 0.9764 - f1_m: 0.9814 - precision_m: 0.9840 - recall_m: 0.9790
Epoch 51/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0558 - accuracy: 0.9767 - f1_m: 0.9816 - precision_m: 0.9845 - recall_m: 0.9791
Epoch 52/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0552 - accuracy: 0.9768 - f1_m: 0.9818 - precision_m: 0.9846 - recall_m: 0.9792
Epoch 53/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0548 - accuracy: 0.9767 - f1_m: 0.9816 - precision_m: 0.9847 - recall_m: 0.9789
Epoch 54/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0543 - accuracy: 0.9772 - f1_m: 0.9820 - precision_m: 0.9850 - recall_m: 0.9792
Epoch 55/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0540 - accuracy: 0.9773 - f1_m: 0.9821 - precision_m: 0.9847 - recall_m: 0.9798
Epoch 56/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0539 - accuracy: 0.9773 - f1_m: 0.9821 - precision_m: 0.9852 - recall_m: 0.9794
Epoch 57/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0529 - accuracy: 0.9775 - f1_m: 0.9823 - precision_m: 0.9849 - recall_m: 0.9800
Epoch 58/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0528 - accuracy: 0.9775 - f1_m: 0.9823 - precision_m: 0.9852 - recall_m: 0.9797
Epoch 59/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0525 - accuracy: 0.9777 - f1_m: 0.9824 - precision_m: 0.9853 - recall_m: 0.9797
Epoch 60/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0523 - accuracy: 0.9779 - f1_m: 0.9826 - precision_m: 0.9852 - recall_m: 0.9802
Epoch 61/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0514 - accuracy: 0.9785 - f1_m: 0.9830 - precision_m: 0.9855 - recall_m: 0.9808
Epoch 62/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0514 - accuracy: 0.9786 - f1_m: 0.9831 - precision_m: 0.9861 - recall_m: 0.9803
Epoch 63/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0519 - accuracy: 0.9779 - f1_m: 0.9825 - precision_m: 0.9852 - recall_m: 0.9801
Epoch 64/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0499 - accuracy: 0.9789 - f1_m: 0.9834 - precision_m: 0.9860 - recall_m: 0.9811
Epoch 65/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0504 - accuracy: 0.9788 - f1_m: 0.9833 - precision_m: 0.9857 - recall_m: 0.9811
Epoch 66/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0501 - accuracy: 0.9790 - f1_m: 0.9834 - precision_m: 0.9859 - recall_m: 0.9811
Epoch 67/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0489 - accuracy: 0.9796 - f1_m: 0.9839 - precision_m: 0.9865 - recall_m: 0.9816
Epoch 68/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0499 - accuracy: 0.9792 - f1_m: 0.9836 - precision_m: 0.9861 - recall_m: 0.9813
Epoch 69/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0494 - accuracy: 0.9791 - f1_m: 0.9835 - precision_m: 0.9863 - recall_m: 0.9809
Epoch 70/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0487 - accuracy: 0.9797 - f1_m: 0.9840 - precision_m: 0.9865 - recall_m: 0.9817
Epoch 71/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0485 - accuracy: 0.9797 - f1_m: 0.9840 - precision_m: 0.9866 - recall_m: 0.9816
Epoch 72/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0476 - accuracy: 0.9800 - f1_m: 0.9842 - precision_m: 0.9868 - recall_m: 0.9817
Epoch 73/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0476 - accuracy: 0.9798 - f1_m: 0.9841 - precision_m: 0.9864 - recall_m: 0.9819
Epoch 74/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0467 - accuracy: 0.9802 - f1_m: 0.9844 - precision_m: 0.9869 - recall_m: 0.9822
Epoch 75/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0473 - accuracy: 0.9803 - f1_m: 0.9845 - precision_m: 0.9869 - recall_m: 0.9822
Epoch 76/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0476 - accuracy: 0.9799 - f1_m: 0.9841 - precision_m: 0.9867 - recall_m: 0.9819
Epoch 77/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0469 - accuracy: 0.9803 - f1_m: 0.9845 - precision_m: 0.9869 - recall_m: 0.9823
Epoch 78/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0450 - accuracy: 0.9814 - f1_m: 0.9854 - precision_m: 0.9877 - recall_m: 0.9833
Epoch 79/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0460 - accuracy: 0.9806 - f1_m: 0.9847 - precision_m: 0.9873 - recall_m: 0.9824
Epoch 80/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0458 - accuracy: 0.9807 - f1_m: 0.9848 - precision_m: 0.9872 - recall_m: 0.9826
Epoch 81/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0449 - accuracy: 0.9809 - f1_m: 0.9849 - precision_m: 0.9872 - recall_m: 0.9828
Epoch 82/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0461 - accuracy: 0.9807 - f1_m: 0.9848 - precision_m: 0.9870 - recall_m: 0.9828
Epoch 83/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0439 - accuracy: 0.9816 - f1_m: 0.9855 - precision_m: 0.9880 - recall_m: 0.9832
Epoch 84/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0460 - accuracy: 0.9811 - f1_m: 0.9851 - precision_m: 0.9875 - recall_m: 0.9829
Epoch 85/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0444 - accuracy: 0.9812 - f1_m: 0.9852 - precision_m: 0.9874 - recall_m: 0.9832
Epoch 86/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0435 - accuracy: 0.9819 - f1_m: 0.9857 - precision_m: 0.9877 - recall_m: 0.9839
Epoch 87/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0429 - accuracy: 0.9818 - f1_m: 0.9856 - precision_m: 0.9876 - recall_m: 0.9839
Epoch 88/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0440 - accuracy: 0.9815 - f1_m: 0.9854 - precision_m: 0.9877 - recall_m: 0.9833
Epoch 89/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0436 - accuracy: 0.9818 - f1_m: 0.9856 - precision_m: 0.9880 - recall_m: 0.9834
Epoch 90/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0429 - accuracy: 0.9821 - f1_m: 0.9859 - precision_m: 0.9880 - recall_m: 0.9840
Epoch 91/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0434 - accuracy: 0.9818 - f1_m: 0.9856 - precision_m: 0.9881 - recall_m: 0.9834
Epoch 92/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0419 - accuracy: 0.9825 - f1_m: 0.9862 - precision_m: 0.9882 - recall_m: 0.9843
Epoch 93/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0416 - accuracy: 0.9826 - f1_m: 0.9863 - precision_m: 0.9885 - recall_m: 0.9843
Epoch 94/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0430 - accuracy: 0.9822 - f1_m: 0.9860 - precision_m: 0.9881 - recall_m: 0.9841
Epoch 95/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0416 - accuracy: 0.9824 - f1_m: 0.9862 - precision_m: 0.9882 - recall_m: 0.9843
Epoch 96/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0427 - accuracy: 0.9825 - f1_m: 0.9862 - precision_m: 0.9882 - recall_m: 0.9844
Epoch 97/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0416 - accuracy: 0.9826 - f1_m: 0.9863 - precision_m: 0.9884 - recall_m: 0.9844
Epoch 98/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0407 - accuracy: 0.9831 - f1_m: 0.9867 - precision_m: 0.9888 - recall_m: 0.9848
Epoch 99/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0412 - accuracy: 0.9827 - f1_m: 0.9864 - precision_m: 0.9884 - recall_m: 0.9846
Epoch 100/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0400 - accuracy: 0.9833 - f1_m: 0.9868 - precision_m: 0.9888 - recall_m: 0.9850
2658/2658 [==============================] - 2s 907us/step
2658/2658 [==============================] - 3s 1ms/step - loss: 0.0815 - accuracy: 0.9713 - f1_m: 0.9768 - precision_m: 0.9875 - recall_m: 0.9674
score on test: 0.9713388681411743
5395/5395 [==============================] - 6s 1ms/step - loss: 0.0382 - accuracy: 0.9838 - f1_m: 0.9869 - precision_m: 0.9945 - recall_m: 0.9801
score on train: 0.9837745428085327
In [ ]:
from sklearn.metrics import auc
fpr_keras, tpr_keras, thresholds_keras = roc_curve(y_test, y_pred)
auc_keras = auc(fpr_keras, tpr_keras)
plt.plot([0, 1], [0, 1], 'k--')
plt.plot(fpr_keras, tpr_keras, label='Keras (area = {:.3f})'.format(auc_keras))
plt.xlabel('False positive rate')
plt.ylabel('True positive rate')
plt.title('ROC curve')
plt.legend(loc='best')
plt.show()
In [ ]:
dtree1 = DecisionTreeClassifier(max_depth = 10).fit(X_train_mod5, y_multi_train)
y_pred = dtree1.predict(X_test)
print("score on test: " + str(dtree1.score(X_test, y_multi_test)))
print("score on train: "+ str(dtree1.score(X_train_mod5, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_tree['5']=acc
score on test: 0.770369760549466
score on train: 0.8269130510340034
              precision    recall  f1-score   support

           0       0.90      0.94      0.92     30772
           1       0.96      0.81      0.88     19423
           2       0.59      0.83      0.69     14709
           3       0.69      0.59      0.63      7921
           4       0.43      0.13      0.20      5357
           5       0.70      0.72      0.71      4578
           6       0.67      0.02      0.04       909
           7       0.00      0.02      0.01       780
           8       0.00      0.00      0.00       513
           9       0.00      0.00      0.00        66

    accuracy                           0.77     85028
   macro avg       0.50      0.41      0.41     85028
weighted avg       0.79      0.77      0.76     85028

/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
In [ ]:
plot_ROC_curve(dtree1, X_train_mod5, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for DecisionTreeClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=DecisionTreeClassifier(max_depth=10))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for DecisionTreeClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=DecisionTreeClassifier(max_depth=10))
DecisionTreeClassifier(max_depth=10)
DecisionTreeClassifier(max_depth=10)
In [ ]:
rf2 = RandomForestClassifier(n_estimators=30, max_depth=10).fit(X_train_mod5, y_multi_train)
y_pred = rf2.predict(X_test)
print("score on test: " + str(rf2.score(X_test, y_multi_test)))
print("score on train: "+ str(rf2.score(X_train_mod5, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
accuracy = rf2.score(X_test, y_multi_test)
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_rf_m['5']=acc
<ipython-input-87-adb9130efb5e>:1: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().
  rf2 = RandomForestClassifier(n_estimators=30, max_depth=10).fit(X_train_mod5, y_multi_train)
score on test: 0.7773321729312697
score on train: 0.8182355326420668
              precision    recall  f1-score   support

           0       0.76      0.97      0.85     30772
           1       1.00      0.96      0.98     19423
           2       0.61      0.85      0.71     14709
           3       0.72      0.43      0.54      7921
           4       0.72      0.01      0.02      5357
           5       0.90      0.34      0.50      4578
           6       1.00      0.00      0.00       909
           7       1.00      0.00      0.01       780
           8       0.00      0.00      0.00       513
           9       0.00      0.00      0.00        66

    accuracy                           0.78     85028
   macro avg       0.67      0.36      0.36     85028
weighted avg       0.79      0.78      0.73     85028

/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
In [ ]:
plot_ROC_curve(rf2, X_train_mod5, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for RandomForestClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=RandomForestClassifier(max_depth=10, n_estimators=30))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for RandomForestClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=RandomForestClassifier(max_depth=10, n_estimators=30))
RandomForestClassifier(max_depth=10, n_estimators=30)
RandomForestClassifier(max_depth=10, n_estimators=30)
In [ ]:
xgb2 = xgb.XGBClassifier(objective="multi:softprob", random_state=42)
xgb2.fit(X_train_mod5, y_multi_train)
y_pred = xgb2.predict(X_test)
print("score on test: " + str(xgb2.score(X_test, y_multi_test)))
print("score on train: "+ str(xgb2.score(X_train_mod5, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_xgb_m['5']=acc
score on test: 0.8534129933668909
score on train: 0.9074378729073741
              precision    recall  f1-score   support

           0       0.95      0.97      0.96     30772
           1       1.00      0.98      0.99     19423
           2       0.67      0.80      0.73     14709
           3       0.82      0.76      0.79      7921
           4       0.40      0.38      0.39      5357
           5       0.89      0.76      0.82      4578
           6       0.61      0.11      0.19       909
           7       0.60      0.07      0.12       780
           8       0.73      0.30      0.42       513
           9       0.73      0.24      0.36        66

    accuracy                           0.85     85028
   macro avg       0.74      0.54      0.58     85028
weighted avg       0.85      0.85      0.85     85028

In [ ]:
plot_ROC_curve(xgb2, X_train_mod5, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for XGBClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=XGBClassifier(base_score=None, booster=None, callbacks=None,
                               colsample_bylevel=None, colsample_bynode=None,
                               colsample_bytree=None,
                               early_stopping_rounds=None,
                               enable_categorical=False, eval_metric=None,
                               feature_types=None, gamma=None, g...
                               grow_policy=None, importance_type=None,
                               interaction_constraints=None, learning_rate=None,
                               max_bin=None, max_cat_threshold=None,
                               max_cat_to_onehot=None, max_delta_step=None,
                               max_depth=None, max_leaves=None,
                               min_child_weight=None, missing=nan,
                               monotone_constraints=None, n_estimators=100,
                               n_jobs=None, num_parallel_tree=None,
                               objective='multi:softprob', predictor=None, ...))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for XGBClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=XGBClassifier(base_score=None, booster=None, callbacks=None,
                               colsample_bylevel=None, colsample_bynode=None,
                               colsample_bytree=None,
                               early_stopping_rounds=None,
                               enable_categorical=False, eval_metric=None,
                               feature_types=None, gamma=None, g...
                               grow_policy=None, importance_type=None,
                               interaction_constraints=None, learning_rate=None,
                               max_bin=None, max_cat_threshold=None,
                               max_cat_to_onehot=None, max_delta_step=None,
                               max_depth=None, max_leaves=None,
                               min_child_weight=None, missing=nan,
                               monotone_constraints=None, n_estimators=100,
                               n_jobs=None, num_parallel_tree=None,
                               objective='multi:softprob', predictor=None, ...))
XGBClassifier(base_score=None, booster=None, callbacks=None,
              colsample_bylevel=None, colsample_bynode=None,
              colsample_bytree=None, early_stopping_rounds=None,
              enable_categorical=False, eval_metric=None, feature_types=None,
              gamma=None, gpu_id=None, grow_policy=None, importance_type=None,
              interaction_constraints=None, learning_rate=None, max_bin=None,
              max_cat_threshold=None, max_cat_to_onehot=None,
              max_delta_step=None, max_depth=None, max_leaves=None,
              min_child_weight=None, missing=nan, monotone_constraints=None,
              n_estimators=100, n_jobs=None, num_parallel_tree=None,
              objective='multi:softprob', predictor=None, ...)
XGBClassifier(base_score=None, booster=None, callbacks=None,
              colsample_bylevel=None, colsample_bynode=None,
              colsample_bytree=None, early_stopping_rounds=None,
              enable_categorical=False, eval_metric=None, feature_types=None,
              gamma=None, gpu_id=None, grow_policy=None, importance_type=None,
              interaction_constraints=None, learning_rate=None, max_bin=None,
              max_cat_threshold=None, max_cat_to_onehot=None,
              max_delta_step=None, max_depth=None, max_leaves=None,
              min_child_weight=None, missing=nan, monotone_constraints=None,
              n_estimators=100, n_jobs=None, num_parallel_tree=None,
              objective='multi:softprob', predictor=None, ...)
In [ ]:
model2 = models.Sequential()
model2.add(layers.Dense(128, input_shape = (42,), activation = "relu"))
model2.add(layers.Dense(64, activation = "relu"))
model2.add(layers.Dense(64,activation="relu"))
model2.add(layers.Dense(10, activation = "softmax"))
model2.compile(optimizer='adam', loss="sparse_categorical_crossentropy", metrics = ["accuracy", f1_m, precision_m, recall_m])
model2.summary()

earlystopping = callbacks.EarlyStopping(monitor="loss",
                                        mode="min", patience=5,
                                        restore_best_weights=True)

model2.fit(X_train_mod5,y_multi_train,epochs=100,batch_size=128,callbacks=[earlystopping])
y_pred_arr = model2.predict(X_test)
y_pred = []
for el in y_pred_arr:
    ind = np.argmax(el)
    y_pred.append(ind)
scores=model2.evaluate(X_test, y_multi_test, verbose=0)
res_nn_m['5']=scores[1]
print("score on test: " + str(model2.evaluate(X_test,y_multi_test)[1]))
print("score on train: "+ str(model2.evaluate(X_train_mod5,y_multi_train)[1]))
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
Model: "sequential_9"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense_36 (Dense)            (None, 128)               5504      
                                                                 
 dense_37 (Dense)            (None, 64)                8256      
                                                                 
 dense_38 (Dense)            (None, 64)                4160      
                                                                 
 dense_39 (Dense)            (None, 10)                650       
                                                                 
=================================================================
Total params: 18,570
Trainable params: 18,570
Non-trainable params: 0
_________________________________________________________________
Epoch 1/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.9108 - accuracy: 0.6693 - f1_m: 1.7637 - precision_m: 1.8917 - recall_m: 1.7088
Epoch 2/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.7095 - accuracy: 0.7365 - f1_m: 1.5835 - precision_m: 1.5281 - recall_m: 1.6525
Epoch 3/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.6288 - accuracy: 0.7644 - f1_m: 1.4801 - precision_m: 1.3776 - recall_m: 1.6072
Epoch 4/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5841 - accuracy: 0.7812 - f1_m: 1.4179 - precision_m: 1.2975 - recall_m: 1.5700
Epoch 5/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5572 - accuracy: 0.7920 - f1_m: 1.3757 - precision_m: 1.2491 - recall_m: 1.5379
Epoch 6/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5402 - accuracy: 0.7966 - f1_m: 1.3466 - precision_m: 1.2148 - recall_m: 1.5178
Epoch 7/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5263 - accuracy: 0.8007 - f1_m: 1.3321 - precision_m: 1.1968 - recall_m: 1.5086
Epoch 8/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5154 - accuracy: 0.8049 - f1_m: 1.3180 - precision_m: 1.1807 - recall_m: 1.4980
Epoch 9/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5061 - accuracy: 0.8088 - f1_m: 1.3018 - precision_m: 1.1625 - recall_m: 1.4858
Epoch 10/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4959 - accuracy: 0.8111 - f1_m: 1.2957 - precision_m: 1.1558 - recall_m: 1.4806
Epoch 11/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4861 - accuracy: 0.8159 - f1_m: 1.2830 - precision_m: 1.1419 - recall_m: 1.4703
Epoch 12/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4754 - accuracy: 0.8198 - f1_m: 1.2706 - precision_m: 1.1284 - recall_m: 1.4603
Epoch 13/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4671 - accuracy: 0.8231 - f1_m: 1.2669 - precision_m: 1.1242 - recall_m: 1.4575
Epoch 14/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4596 - accuracy: 0.8255 - f1_m: 1.2599 - precision_m: 1.1166 - recall_m: 1.4523
Epoch 15/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4532 - accuracy: 0.8283 - f1_m: 1.2517 - precision_m: 1.1066 - recall_m: 1.4470
Epoch 16/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4485 - accuracy: 0.8300 - f1_m: 1.2484 - precision_m: 1.1026 - recall_m: 1.4449
Epoch 17/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4447 - accuracy: 0.8302 - f1_m: 1.2438 - precision_m: 1.0980 - recall_m: 1.4406
Epoch 18/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4409 - accuracy: 0.8312 - f1_m: 1.2410 - precision_m: 1.0945 - recall_m: 1.4390
Epoch 19/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4388 - accuracy: 0.8326 - f1_m: 1.2427 - precision_m: 1.0960 - recall_m: 1.4407
Epoch 20/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4351 - accuracy: 0.8338 - f1_m: 1.2384 - precision_m: 1.0915 - recall_m: 1.4374
Epoch 21/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4315 - accuracy: 0.8354 - f1_m: 1.2369 - precision_m: 1.0897 - recall_m: 1.4364
Epoch 22/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4287 - accuracy: 0.8352 - f1_m: 1.2348 - precision_m: 1.0861 - recall_m: 1.4362
Epoch 23/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4278 - accuracy: 0.8360 - f1_m: 1.2312 - precision_m: 1.0826 - recall_m: 1.4329
Epoch 24/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4247 - accuracy: 0.8374 - f1_m: 1.2327 - precision_m: 1.0847 - recall_m: 1.4336
Epoch 25/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.4219 - accuracy: 0.8376 - f1_m: 1.2320 - precision_m: 1.0834 - recall_m: 1.4339
Epoch 26/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4207 - accuracy: 0.8382 - f1_m: 1.2309 - precision_m: 1.0817 - recall_m: 1.4332
Epoch 27/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4193 - accuracy: 0.8394 - f1_m: 1.2295 - precision_m: 1.0804 - recall_m: 1.4322
Epoch 28/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4179 - accuracy: 0.8395 - f1_m: 1.2278 - precision_m: 1.0788 - recall_m: 1.4306
Epoch 29/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4151 - accuracy: 0.8402 - f1_m: 1.2291 - precision_m: 1.0802 - recall_m: 1.4319
Epoch 30/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4138 - accuracy: 0.8407 - f1_m: 1.2265 - precision_m: 1.0770 - recall_m: 1.4299
Epoch 31/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4125 - accuracy: 0.8411 - f1_m: 1.2259 - precision_m: 1.0767 - recall_m: 1.4287
Epoch 32/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4118 - accuracy: 0.8413 - f1_m: 1.2240 - precision_m: 1.0745 - recall_m: 1.4276
Epoch 33/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4107 - accuracy: 0.8414 - f1_m: 1.2222 - precision_m: 1.0727 - recall_m: 1.4260
Epoch 34/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4100 - accuracy: 0.8420 - f1_m: 1.2250 - precision_m: 1.0756 - recall_m: 1.4286
Epoch 35/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4066 - accuracy: 0.8420 - f1_m: 1.2222 - precision_m: 1.0721 - recall_m: 1.4268
Epoch 36/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4061 - accuracy: 0.8435 - f1_m: 1.2231 - precision_m: 1.0720 - recall_m: 1.4289
Epoch 37/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4040 - accuracy: 0.8439 - f1_m: 1.2201 - precision_m: 1.0700 - recall_m: 1.4252
Epoch 38/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.4041 - accuracy: 0.8431 - f1_m: 1.2198 - precision_m: 1.0685 - recall_m: 1.4265
Epoch 39/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4025 - accuracy: 0.8441 - f1_m: 1.2188 - precision_m: 1.0683 - recall_m: 1.4246
Epoch 40/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4006 - accuracy: 0.8450 - f1_m: 1.2189 - precision_m: 1.0683 - recall_m: 1.4244
Epoch 41/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4000 - accuracy: 0.8447 - f1_m: 1.2144 - precision_m: 1.0643 - recall_m: 1.4203
Epoch 42/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3993 - accuracy: 0.8449 - f1_m: 1.2185 - precision_m: 1.0686 - recall_m: 1.4232
Epoch 43/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3986 - accuracy: 0.8449 - f1_m: 1.2156 - precision_m: 1.0644 - recall_m: 1.4226
Epoch 44/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3965 - accuracy: 0.8459 - f1_m: 1.2155 - precision_m: 1.0648 - recall_m: 1.4217
Epoch 45/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3957 - accuracy: 0.8466 - f1_m: 1.2135 - precision_m: 1.0620 - recall_m: 1.4213
Epoch 46/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3948 - accuracy: 0.8465 - f1_m: 1.2124 - precision_m: 1.0610 - recall_m: 1.4197
Epoch 47/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3940 - accuracy: 0.8472 - f1_m: 1.2126 - precision_m: 1.0617 - recall_m: 1.4196
Epoch 48/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.3941 - accuracy: 0.8469 - f1_m: 1.2126 - precision_m: 1.0611 - recall_m: 1.4203
Epoch 49/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3922 - accuracy: 0.8477 - f1_m: 1.2102 - precision_m: 1.0593 - recall_m: 1.4175
Epoch 50/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3911 - accuracy: 0.8475 - f1_m: 1.2112 - precision_m: 1.0595 - recall_m: 1.4196
Epoch 51/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.3905 - accuracy: 0.8472 - f1_m: 1.2126 - precision_m: 1.0615 - recall_m: 1.4196
Epoch 52/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.3897 - accuracy: 0.8481 - f1_m: 1.2104 - precision_m: 1.0591 - recall_m: 1.4183
Epoch 53/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.3898 - accuracy: 0.8484 - f1_m: 1.2096 - precision_m: 1.0578 - recall_m: 1.4176
Epoch 54/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3874 - accuracy: 0.8484 - f1_m: 1.2092 - precision_m: 1.0575 - recall_m: 1.4173
Epoch 55/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3879 - accuracy: 0.8483 - f1_m: 1.2048 - precision_m: 1.0525 - recall_m: 1.4143
Epoch 56/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.3865 - accuracy: 0.8493 - f1_m: 1.2077 - precision_m: 1.0557 - recall_m: 1.4164
Epoch 57/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.3861 - accuracy: 0.8492 - f1_m: 1.2071 - precision_m: 1.0551 - recall_m: 1.4163
Epoch 58/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.3849 - accuracy: 0.8498 - f1_m: 1.2076 - precision_m: 1.0560 - recall_m: 1.4157
Epoch 59/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3856 - accuracy: 0.8499 - f1_m: 1.2067 - precision_m: 1.0548 - recall_m: 1.4156
Epoch 60/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3845 - accuracy: 0.8502 - f1_m: 1.2045 - precision_m: 1.0528 - recall_m: 1.4134
Epoch 61/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3829 - accuracy: 0.8504 - f1_m: 1.2065 - precision_m: 1.0545 - recall_m: 1.4154
Epoch 62/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3811 - accuracy: 0.8512 - f1_m: 1.2041 - precision_m: 1.0521 - recall_m: 1.4131
Epoch 63/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3821 - accuracy: 0.8507 - f1_m: 1.2026 - precision_m: 1.0501 - recall_m: 1.4128
Epoch 64/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3805 - accuracy: 0.8510 - f1_m: 1.2059 - precision_m: 1.0548 - recall_m: 1.4137
Epoch 65/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3821 - accuracy: 0.8508 - f1_m: 1.2007 - precision_m: 1.0485 - recall_m: 1.4102
Epoch 66/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3808 - accuracy: 0.8510 - f1_m: 1.2011 - precision_m: 1.0486 - recall_m: 1.4112
Epoch 67/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3792 - accuracy: 0.8517 - f1_m: 1.2033 - precision_m: 1.0509 - recall_m: 1.4133
Epoch 68/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3787 - accuracy: 0.8521 - f1_m: 1.2028 - precision_m: 1.0501 - recall_m: 1.4132
Epoch 69/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3782 - accuracy: 0.8519 - f1_m: 1.2016 - precision_m: 1.0489 - recall_m: 1.4117
Epoch 70/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3784 - accuracy: 0.8519 - f1_m: 1.2035 - precision_m: 1.0511 - recall_m: 1.4129
Epoch 71/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3763 - accuracy: 0.8522 - f1_m: 1.1980 - precision_m: 1.0450 - recall_m: 1.4092
Epoch 72/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3774 - accuracy: 0.8525 - f1_m: 1.2017 - precision_m: 1.0489 - recall_m: 1.4119
Epoch 73/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3761 - accuracy: 0.8530 - f1_m: 1.2002 - precision_m: 1.0479 - recall_m: 1.4102
Epoch 74/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3753 - accuracy: 0.8527 - f1_m: 1.1991 - precision_m: 1.0459 - recall_m: 1.4105
Epoch 75/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.3735 - accuracy: 0.8534 - f1_m: 1.1986 - precision_m: 1.0458 - recall_m: 1.4097
Epoch 76/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3741 - accuracy: 0.8533 - f1_m: 1.1974 - precision_m: 1.0441 - recall_m: 1.4095
Epoch 77/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3730 - accuracy: 0.8538 - f1_m: 1.1993 - precision_m: 1.0463 - recall_m: 1.4103
Epoch 78/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3728 - accuracy: 0.8541 - f1_m: 1.1979 - precision_m: 1.0451 - recall_m: 1.4092
Epoch 79/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3723 - accuracy: 0.8540 - f1_m: 1.2006 - precision_m: 1.0475 - recall_m: 1.4118
Epoch 80/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3732 - accuracy: 0.8541 - f1_m: 1.1997 - precision_m: 1.0469 - recall_m: 1.4104
Epoch 81/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3728 - accuracy: 0.8544 - f1_m: 1.1973 - precision_m: 1.0442 - recall_m: 1.4088
Epoch 82/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3709 - accuracy: 0.8543 - f1_m: 1.1960 - precision_m: 1.0427 - recall_m: 1.4078
Epoch 83/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3710 - accuracy: 0.8540 - f1_m: 1.1985 - precision_m: 1.0453 - recall_m: 1.4101
Epoch 84/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3704 - accuracy: 0.8552 - f1_m: 1.1977 - precision_m: 1.0440 - recall_m: 1.4098
Epoch 85/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3708 - accuracy: 0.8544 - f1_m: 1.1957 - precision_m: 1.0421 - recall_m: 1.4078
Epoch 86/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3698 - accuracy: 0.8550 - f1_m: 1.1952 - precision_m: 1.0417 - recall_m: 1.4073
Epoch 87/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3689 - accuracy: 0.8552 - f1_m: 1.1954 - precision_m: 1.0418 - recall_m: 1.4080
Epoch 88/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3684 - accuracy: 0.8561 - f1_m: 1.1962 - precision_m: 1.0427 - recall_m: 1.4085
Epoch 89/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3695 - accuracy: 0.8546 - f1_m: 1.1956 - precision_m: 1.0432 - recall_m: 1.4059
Epoch 90/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3666 - accuracy: 0.8559 - f1_m: 1.1942 - precision_m: 1.0404 - recall_m: 1.4072
Epoch 91/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3653 - accuracy: 0.8565 - f1_m: 1.1957 - precision_m: 1.0422 - recall_m: 1.4079
Epoch 92/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3673 - accuracy: 0.8554 - f1_m: 1.1957 - precision_m: 1.0418 - recall_m: 1.4084
Epoch 93/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3684 - accuracy: 0.8558 - f1_m: 1.1936 - precision_m: 1.0396 - recall_m: 1.4064
Epoch 94/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3656 - accuracy: 0.8560 - f1_m: 1.1941 - precision_m: 1.0403 - recall_m: 1.4071
Epoch 95/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3658 - accuracy: 0.8568 - f1_m: 1.1927 - precision_m: 1.0387 - recall_m: 1.4061
Epoch 96/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3653 - accuracy: 0.8569 - f1_m: 1.1931 - precision_m: 1.0393 - recall_m: 1.4062
Epoch 97/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3642 - accuracy: 0.8563 - f1_m: 1.1936 - precision_m: 1.0393 - recall_m: 1.4069
Epoch 98/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3645 - accuracy: 0.8566 - f1_m: 1.1913 - precision_m: 1.0374 - recall_m: 1.4046
Epoch 99/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3636 - accuracy: 0.8568 - f1_m: 1.1900 - precision_m: 1.0357 - recall_m: 1.4037
Epoch 100/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3636 - accuracy: 0.8567 - f1_m: 1.1921 - precision_m: 1.0380 - recall_m: 1.4056
2658/2658 [==============================] - 3s 924us/step
2658/2658 [==============================] - 3s 1ms/step - loss: 0.4225 - accuracy: 0.8457 - f1_m: 1.2004 - precision_m: 1.0583 - recall_m: 1.4088
score on test: 0.8456978797912598
5395/5395 [==============================] - 7s 1ms/step - loss: 0.3499 - accuracy: 0.8604 - f1_m: 1.2004 - precision_m: 1.0582 - recall_m: 1.4094
score on train: 0.8603545427322388
In [ ]:
fig, c_ax = plt.subplots(1,1, figsize = (12, 8))
print('ROC AUC score:', multiclass_roc_auc_score(y_multi_test, y_pred))

c_ax.legend()
c_ax.set_xlabel('False Positive Rate')
c_ax.set_ylabel('True Positive Rate')
plt.show()
ROC AUC score: 0.7599266831939349

Noise range 3

In [ ]:
noise6 = 6
X_train_mod6 = modify_dataset(X_train, variables_to_poison, noise6)

X_train_mod6
Out[ ]:
array([[ 1.79214449, -0.2082886 ,  3.79655808, ...,  0.89924558,
        -0.3952588 , -0.12070382],
       [-0.57638416,  1.78686151, -3.32366538, ..., -2.90888974,
         7.8279375 , -0.12070382],
       [-1.0569863 , -0.20828827,  3.46781103, ...,  9.6926833 ,
         3.01798364, -0.12070382],
       ...,
       [-0.47187522, -0.06694436, -0.24042675, ...,  9.16582496,
         3.1901775 , -0.12070382],
       [-0.1666061 , -0.18783648, -0.96993323, ..., -0.44809629,
         7.74497192, -0.12070382],
       [-0.6757627 , -0.20011705, -6.60339241, ..., -2.33324492,
         0.82474916, -0.12070382]])
In [ ]:
from sklearn import metrics
from sklearn.metrics import (confusion_matrix, accuracy_score, precision_score, recall_score, f1_score)
lr1=LogisticRegression()
lr1.fit(X_train_mod6, y_train)
y_pred = lr1.predict(X_test)
print("score on test: " + str(lr1.score(X_test, y_test)))
print("score on train: "+ str(lr1.score(X_train_mod6, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_log['6']=acc
/usr/local/lib/python3.10/dist-packages/sklearn/utils/validation.py:1143: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)
/usr/local/lib/python3.10/dist-packages/sklearn/linear_model/_logistic.py:458: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
    https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
  n_iter_i = _check_optimize_result(
score on test: 0.8916239356447287
score on train: 0.8925968835080809
              precision    recall  f1-score   support

           0       0.93      0.75      0.83     30772
           1       0.87      0.97      0.92     54256

    accuracy                           0.89     85028
   macro avg       0.90      0.86      0.88     85028
weighted avg       0.90      0.89      0.89     85028

In [ ]:
# ROC curve and AUC
lr1_predproba = lr1.predict_proba(X_test)[:, 1]
AUC_lr1 = roc_auc_score(y_test, lr1_predproba)
print(f'AUC: {AUC_lr1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, lr1_predproba)
plt.plot(fpr, tpr, label='logistic regression Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9529
In [ ]:
rf1 = RandomForestClassifier(n_estimators=30, max_depth=10)
rf1.fit(X_train_mod6, y_train)
y_pred = rf1.predict(X_test)
print("score on test: " + str(rf1.score(X_test, y_test)))
print("score on train: "+ str(rf1.score(X_train_mod6, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_rf_b['6']=acc
<ipython-input-96-6f5d5b3d70e0>:2: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().
  rf1.fit(X_train_mod6, y_train)
score on test: 0.8954579667874112
score on train: 0.952302612523895
              precision    recall  f1-score   support

           0       0.81      0.92      0.86     30772
           1       0.95      0.88      0.91     54256

    accuracy                           0.90     85028
   macro avg       0.88      0.90      0.89     85028
weighted avg       0.90      0.90      0.90     85028

In [ ]:
rf1_predproba = rf1.predict_proba(X_test)[:, 1]
AUC_rf1 = roc_auc_score(y_test, rf1_predproba)
print(f'AUC: {AUC_rf1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, rf1_predproba)
plt.plot(fpr, tpr, label='random forest Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9722
In [ ]:
xgb1 = xgb.XGBClassifier(objective="binary:logistic", random_state=42)
xgb1.fit(X_train_mod6, y_train)
y_pred = xgb1.predict(X_test)
print("score on test: " + str(xgb1.score(X_test, y_test)))
print("score on train: "+ str(xgb1.score(X_train_mod6, y_train)))
print(metrics.classification_report(y_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_test, y_pred)
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
res_xgb_b['6']=acc
score on test: 0.9674577786141035
score on train: 0.9924462723744425
              precision    recall  f1-score   support

           0       0.96      0.95      0.95     30772
           1       0.97      0.98      0.97     54256

    accuracy                           0.97     85028
   macro avg       0.97      0.96      0.96     85028
weighted avg       0.97      0.97      0.97     85028

In [ ]:
# ROC curve and AUC
xgb1_predproba = xgb1.predict_proba(X_test)[:, 1]
AUC_xgb1 = roc_auc_score(y_test, xgb1_predproba)
print(f'AUC: {AUC_xgb1:.4f}')
# Compute false positive rate, true positive rate, and thresholds
fpr, tpr, thresholds = roc_curve(y_test, xgb1_predproba)
plt.plot(fpr, tpr, label='Gradient boosting Model')
plt.plot([0, 1], [0, 1], 'k--', label='Random classification')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
AUC: 0.9952
In [ ]:
model=models.Sequential()
model.add(layers.Dense(128,activation='relu',input_shape=(42,)))
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(1,activation='sigmoid'))
model.summary

model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy', f1_m, precision_m, recall_m])

earlystopping = callbacks.EarlyStopping(monitor="loss",
                                        mode="min", patience=5,
                                        restore_best_weights=True)
model.fit(X_train_mod6, y_train, batch_size=128, epochs=100, callbacks=[earlystopping])

y_pred = model.predict(X_test)
print("score on test: " + str(model.evaluate(X_test,y_test)[1]))
print("score on train: "+ str(model.evaluate(X_train_mod6,y_train)[1]))
loss, accuracy, f1_score, precision, recall = model.evaluate(X_test, y_test, verbose=0)
scores=model.evaluate(X_test, y_test, verbose=0)
res_nn_b['6']=scores[1]
from sklearn import metrics
y_pred_mat = y_pred.round()
confusion_matrix = metrics.confusion_matrix(y_test, y_pred_mat)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])
cm_display.plot()
plt.show()
Epoch 1/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.2754 - accuracy: 0.8759 - f1_m: 0.9068 - precision_m: 0.8720 - recall_m: 0.9463
Epoch 2/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.2097 - accuracy: 0.9037 - f1_m: 0.9265 - precision_m: 0.9008 - recall_m: 0.9550
Epoch 3/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1872 - accuracy: 0.9137 - f1_m: 0.9334 - precision_m: 0.9174 - recall_m: 0.9509
Epoch 4/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1738 - accuracy: 0.9196 - f1_m: 0.9377 - precision_m: 0.9259 - recall_m: 0.9508
Epoch 5/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1596 - accuracy: 0.9257 - f1_m: 0.9421 - precision_m: 0.9346 - recall_m: 0.9506
Epoch 6/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1484 - accuracy: 0.9313 - f1_m: 0.9463 - precision_m: 0.9421 - recall_m: 0.9512
Epoch 7/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1399 - accuracy: 0.9366 - f1_m: 0.9503 - precision_m: 0.9475 - recall_m: 0.9538
Epoch 8/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1249 - accuracy: 0.9447 - f1_m: 0.9565 - precision_m: 0.9559 - recall_m: 0.9577
Epoch 9/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1090 - accuracy: 0.9534 - f1_m: 0.9634 - precision_m: 0.9634 - recall_m: 0.9639
Epoch 10/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.1011 - accuracy: 0.9569 - f1_m: 0.9661 - precision_m: 0.9673 - recall_m: 0.9654
Epoch 11/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0956 - accuracy: 0.9591 - f1_m: 0.9678 - precision_m: 0.9691 - recall_m: 0.9670
Epoch 12/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0928 - accuracy: 0.9605 - f1_m: 0.9689 - precision_m: 0.9705 - recall_m: 0.9678
Epoch 13/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0899 - accuracy: 0.9618 - f1_m: 0.9699 - precision_m: 0.9714 - recall_m: 0.9688
Epoch 14/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0877 - accuracy: 0.9628 - f1_m: 0.9707 - precision_m: 0.9724 - recall_m: 0.9693
Epoch 15/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0854 - accuracy: 0.9633 - f1_m: 0.9711 - precision_m: 0.9735 - recall_m: 0.9691
Epoch 16/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0847 - accuracy: 0.9640 - f1_m: 0.9716 - precision_m: 0.9740 - recall_m: 0.9697
Epoch 17/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0835 - accuracy: 0.9645 - f1_m: 0.9720 - precision_m: 0.9744 - recall_m: 0.9700
Epoch 18/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0818 - accuracy: 0.9654 - f1_m: 0.9727 - precision_m: 0.9754 - recall_m: 0.9704
Epoch 19/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0802 - accuracy: 0.9659 - f1_m: 0.9732 - precision_m: 0.9758 - recall_m: 0.9709
Epoch 20/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0791 - accuracy: 0.9663 - f1_m: 0.9734 - precision_m: 0.9763 - recall_m: 0.9709
Epoch 21/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0784 - accuracy: 0.9667 - f1_m: 0.9737 - precision_m: 0.9768 - recall_m: 0.9709
Epoch 22/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0768 - accuracy: 0.9668 - f1_m: 0.9739 - precision_m: 0.9770 - recall_m: 0.9711
Epoch 23/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0757 - accuracy: 0.9677 - f1_m: 0.9746 - precision_m: 0.9779 - recall_m: 0.9716
Epoch 24/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0749 - accuracy: 0.9684 - f1_m: 0.9751 - precision_m: 0.9783 - recall_m: 0.9723
Epoch 25/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0738 - accuracy: 0.9685 - f1_m: 0.9752 - precision_m: 0.9784 - recall_m: 0.9723
Epoch 26/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0725 - accuracy: 0.9693 - f1_m: 0.9757 - precision_m: 0.9794 - recall_m: 0.9724
Epoch 27/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0730 - accuracy: 0.9689 - f1_m: 0.9754 - precision_m: 0.9789 - recall_m: 0.9723
Epoch 28/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.0720 - accuracy: 0.9693 - f1_m: 0.9759 - precision_m: 0.9793 - recall_m: 0.9728
Epoch 29/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0717 - accuracy: 0.9695 - f1_m: 0.9759 - precision_m: 0.9796 - recall_m: 0.9726
Epoch 30/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0702 - accuracy: 0.9703 - f1_m: 0.9766 - precision_m: 0.9799 - recall_m: 0.9736
Epoch 31/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0699 - accuracy: 0.9701 - f1_m: 0.9764 - precision_m: 0.9799 - recall_m: 0.9733
Epoch 32/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0687 - accuracy: 0.9709 - f1_m: 0.9771 - precision_m: 0.9807 - recall_m: 0.9738
Epoch 33/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0689 - accuracy: 0.9706 - f1_m: 0.9768 - precision_m: 0.9803 - recall_m: 0.9736
Epoch 34/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0679 - accuracy: 0.9707 - f1_m: 0.9768 - precision_m: 0.9805 - recall_m: 0.9735
Epoch 35/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0671 - accuracy: 0.9714 - f1_m: 0.9775 - precision_m: 0.9809 - recall_m: 0.9743
Epoch 36/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0669 - accuracy: 0.9715 - f1_m: 0.9776 - precision_m: 0.9810 - recall_m: 0.9744
Epoch 37/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0656 - accuracy: 0.9721 - f1_m: 0.9779 - precision_m: 0.9816 - recall_m: 0.9747
Epoch 38/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0648 - accuracy: 0.9725 - f1_m: 0.9783 - precision_m: 0.9817 - recall_m: 0.9751
Epoch 39/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0658 - accuracy: 0.9724 - f1_m: 0.9782 - precision_m: 0.9817 - recall_m: 0.9751
Epoch 40/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0639 - accuracy: 0.9728 - f1_m: 0.9785 - precision_m: 0.9819 - recall_m: 0.9754
Epoch 41/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0640 - accuracy: 0.9728 - f1_m: 0.9785 - precision_m: 0.9819 - recall_m: 0.9755
Epoch 42/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0628 - accuracy: 0.9732 - f1_m: 0.9789 - precision_m: 0.9824 - recall_m: 0.9756
Epoch 43/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0633 - accuracy: 0.9732 - f1_m: 0.9789 - precision_m: 0.9823 - recall_m: 0.9758
Epoch 44/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0620 - accuracy: 0.9731 - f1_m: 0.9788 - precision_m: 0.9821 - recall_m: 0.9757
Epoch 45/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0620 - accuracy: 0.9733 - f1_m: 0.9790 - precision_m: 0.9825 - recall_m: 0.9759
Epoch 46/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0615 - accuracy: 0.9738 - f1_m: 0.9793 - precision_m: 0.9829 - recall_m: 0.9760
Epoch 47/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0611 - accuracy: 0.9741 - f1_m: 0.9796 - precision_m: 0.9828 - recall_m: 0.9766
Epoch 48/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0605 - accuracy: 0.9745 - f1_m: 0.9799 - precision_m: 0.9833 - recall_m: 0.9768
Epoch 49/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0597 - accuracy: 0.9745 - f1_m: 0.9799 - precision_m: 0.9834 - recall_m: 0.9767
Epoch 50/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0598 - accuracy: 0.9746 - f1_m: 0.9800 - precision_m: 0.9832 - recall_m: 0.9770
Epoch 51/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0590 - accuracy: 0.9748 - f1_m: 0.9801 - precision_m: 0.9833 - recall_m: 0.9771
Epoch 52/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0594 - accuracy: 0.9747 - f1_m: 0.9801 - precision_m: 0.9833 - recall_m: 0.9772
Epoch 53/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0576 - accuracy: 0.9755 - f1_m: 0.9807 - precision_m: 0.9841 - recall_m: 0.9776
Epoch 54/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0578 - accuracy: 0.9754 - f1_m: 0.9806 - precision_m: 0.9841 - recall_m: 0.9774
Epoch 55/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0575 - accuracy: 0.9756 - f1_m: 0.9807 - precision_m: 0.9841 - recall_m: 0.9777
Epoch 56/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0578 - accuracy: 0.9757 - f1_m: 0.9808 - precision_m: 0.9844 - recall_m: 0.9775
Epoch 57/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0560 - accuracy: 0.9762 - f1_m: 0.9812 - precision_m: 0.9847 - recall_m: 0.9781
Epoch 58/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0564 - accuracy: 0.9759 - f1_m: 0.9809 - precision_m: 0.9843 - recall_m: 0.9778
Epoch 59/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0567 - accuracy: 0.9759 - f1_m: 0.9810 - precision_m: 0.9841 - recall_m: 0.9782
Epoch 60/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0557 - accuracy: 0.9763 - f1_m: 0.9813 - precision_m: 0.9850 - recall_m: 0.9778
Epoch 61/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0551 - accuracy: 0.9765 - f1_m: 0.9814 - precision_m: 0.9847 - recall_m: 0.9784
Epoch 62/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0553 - accuracy: 0.9764 - f1_m: 0.9814 - precision_m: 0.9849 - recall_m: 0.9782
Epoch 63/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0549 - accuracy: 0.9767 - f1_m: 0.9816 - precision_m: 0.9846 - recall_m: 0.9789
Epoch 64/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0547 - accuracy: 0.9770 - f1_m: 0.9818 - precision_m: 0.9852 - recall_m: 0.9787
Epoch 65/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0530 - accuracy: 0.9774 - f1_m: 0.9822 - precision_m: 0.9854 - recall_m: 0.9792
Epoch 66/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0538 - accuracy: 0.9770 - f1_m: 0.9818 - precision_m: 0.9852 - recall_m: 0.9788
Epoch 67/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0532 - accuracy: 0.9774 - f1_m: 0.9822 - precision_m: 0.9855 - recall_m: 0.9791
Epoch 68/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0531 - accuracy: 0.9777 - f1_m: 0.9824 - precision_m: 0.9857 - recall_m: 0.9792
Epoch 69/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0528 - accuracy: 0.9774 - f1_m: 0.9822 - precision_m: 0.9855 - recall_m: 0.9791
Epoch 70/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0525 - accuracy: 0.9777 - f1_m: 0.9824 - precision_m: 0.9857 - recall_m: 0.9794
Epoch 71/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0527 - accuracy: 0.9778 - f1_m: 0.9825 - precision_m: 0.9858 - recall_m: 0.9794
Epoch 72/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0520 - accuracy: 0.9779 - f1_m: 0.9825 - precision_m: 0.9858 - recall_m: 0.9795
Epoch 73/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0511 - accuracy: 0.9784 - f1_m: 0.9830 - precision_m: 0.9859 - recall_m: 0.9803
Epoch 74/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0515 - accuracy: 0.9783 - f1_m: 0.9829 - precision_m: 0.9860 - recall_m: 0.9800
Epoch 75/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0506 - accuracy: 0.9786 - f1_m: 0.9831 - precision_m: 0.9864 - recall_m: 0.9800
Epoch 76/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0505 - accuracy: 0.9787 - f1_m: 0.9832 - precision_m: 0.9863 - recall_m: 0.9804
Epoch 77/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0514 - accuracy: 0.9786 - f1_m: 0.9831 - precision_m: 0.9865 - recall_m: 0.9800
Epoch 78/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0499 - accuracy: 0.9790 - f1_m: 0.9835 - precision_m: 0.9865 - recall_m: 0.9807
Epoch 79/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0499 - accuracy: 0.9790 - f1_m: 0.9834 - precision_m: 0.9864 - recall_m: 0.9806
Epoch 80/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0502 - accuracy: 0.9791 - f1_m: 0.9835 - precision_m: 0.9868 - recall_m: 0.9804
Epoch 81/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0486 - accuracy: 0.9791 - f1_m: 0.9835 - precision_m: 0.9867 - recall_m: 0.9805
Epoch 82/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0485 - accuracy: 0.9791 - f1_m: 0.9835 - precision_m: 0.9866 - recall_m: 0.9807
Epoch 83/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0486 - accuracy: 0.9795 - f1_m: 0.9839 - precision_m: 0.9871 - recall_m: 0.9808
Epoch 84/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0489 - accuracy: 0.9793 - f1_m: 0.9837 - precision_m: 0.9867 - recall_m: 0.9809
Epoch 85/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0476 - accuracy: 0.9795 - f1_m: 0.9838 - precision_m: 0.9870 - recall_m: 0.9808
Epoch 86/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0480 - accuracy: 0.9797 - f1_m: 0.9840 - precision_m: 0.9869 - recall_m: 0.9813
Epoch 87/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0478 - accuracy: 0.9799 - f1_m: 0.9841 - precision_m: 0.9871 - recall_m: 0.9814
Epoch 88/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0469 - accuracy: 0.9804 - f1_m: 0.9845 - precision_m: 0.9875 - recall_m: 0.9818
Epoch 89/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0471 - accuracy: 0.9800 - f1_m: 0.9842 - precision_m: 0.9871 - recall_m: 0.9815
Epoch 90/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0463 - accuracy: 0.9806 - f1_m: 0.9847 - precision_m: 0.9876 - recall_m: 0.9819
Epoch 91/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0476 - accuracy: 0.9799 - f1_m: 0.9842 - precision_m: 0.9871 - recall_m: 0.9814
Epoch 92/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0465 - accuracy: 0.9806 - f1_m: 0.9846 - precision_m: 0.9876 - recall_m: 0.9819
Epoch 93/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0460 - accuracy: 0.9806 - f1_m: 0.9847 - precision_m: 0.9878 - recall_m: 0.9818
Epoch 94/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0460 - accuracy: 0.9807 - f1_m: 0.9848 - precision_m: 0.9876 - recall_m: 0.9821
Epoch 95/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0466 - accuracy: 0.9805 - f1_m: 0.9846 - precision_m: 0.9877 - recall_m: 0.9818
Epoch 96/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0456 - accuracy: 0.9808 - f1_m: 0.9849 - precision_m: 0.9878 - recall_m: 0.9822
Epoch 97/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0452 - accuracy: 0.9809 - f1_m: 0.9850 - precision_m: 0.9879 - recall_m: 0.9822
Epoch 98/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0448 - accuracy: 0.9813 - f1_m: 0.9853 - precision_m: 0.9882 - recall_m: 0.9825
Epoch 99/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0451 - accuracy: 0.9808 - f1_m: 0.9849 - precision_m: 0.9878 - recall_m: 0.9822
Epoch 100/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.0444 - accuracy: 0.9813 - f1_m: 0.9852 - precision_m: 0.9880 - recall_m: 0.9827
2658/2658 [==============================] - 2s 872us/step
2658/2658 [==============================] - 3s 1ms/step - loss: 0.0764 - accuracy: 0.9729 - f1_m: 0.9783 - precision_m: 0.9820 - recall_m: 0.9756
score on test: 0.9729265570640564
5395/5395 [==============================] - 6s 1ms/step - loss: 0.0427 - accuracy: 0.9822 - f1_m: 0.9857 - precision_m: 0.9888 - recall_m: 0.9835
score on train: 0.9822047352790833
In [ ]:
from sklearn.metrics import auc
fpr_keras, tpr_keras, thresholds_keras = roc_curve(y_test, y_pred)
auc_keras = auc(fpr_keras, tpr_keras)
plt.plot([0, 1], [0, 1], 'k--')
plt.plot(fpr_keras, tpr_keras, label='Keras (area = {:.3f})'.format(auc_keras))
plt.xlabel('False positive rate')
plt.ylabel('True positive rate')
plt.title('ROC curve')
plt.legend(loc='best')
plt.show()
In [ ]:
dtree1 = DecisionTreeClassifier(max_depth = 10).fit(X_train_mod6, y_multi_train)
y_pred = dtree1.predict(X_test)
print("score on test: " + str(dtree1.score(X_test, y_multi_test)))
print("score on train: "+ str(dtree1.score(X_train_mod6, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_tree['6']=acc
score on test: 0.7619490050336359
score on train: 0.8268551236749117
              precision    recall  f1-score   support

           0       0.90      0.91      0.91     30772
           1       0.96      0.81      0.88     19423
           2       0.57      0.83      0.68     14709
           3       0.69      0.59      0.63      7921
           4       0.44      0.13      0.20      5357
           5       0.72      0.72      0.72      4578
           6       0.67      0.02      0.04       909
           7       0.00      0.02      0.01       780
           8       0.38      0.01      0.01       513
           9       0.00      0.00      0.00        66

    accuracy                           0.76     85028
   macro avg       0.53      0.40      0.41     85028
weighted avg       0.78      0.76      0.76     85028

/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
In [ ]:
plot_ROC_curve(dtree1, X_train_mod6, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for DecisionTreeClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=DecisionTreeClassifier(max_depth=10))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for DecisionTreeClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=DecisionTreeClassifier(max_depth=10))
DecisionTreeClassifier(max_depth=10)
DecisionTreeClassifier(max_depth=10)
In [ ]:
rf2 = RandomForestClassifier(n_estimators=30, max_depth=10).fit(X_train_mod6, y_multi_train)
y_pred = rf2.predict(X_test)
print("score on test: " + str(rf2.score(X_test, y_multi_test)))
print("score on train: "+ str(rf2.score(X_train_mod6, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
accuracy = rf2.score(X_test, y_multi_test)
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_rf_m['6']=acc
<ipython-input-104-3b082d3dcb17>:1: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().
  rf2 = RandomForestClassifier(n_estimators=30, max_depth=10).fit(X_train_mod6, y_multi_train)
score on test: 0.69498282918568
score on train: 0.8142559230724671
              precision    recall  f1-score   support

           0       0.59      0.98      0.73     30772
           1       1.00      0.80      0.89     19423
           2       0.72      0.62      0.67     14709
           3       0.76      0.39      0.52      7921
           4       0.59      0.01      0.02      5357
           5       0.88      0.28      0.42      4578
           6       1.00      0.00      0.01       909
           7       1.00      0.01      0.01       780
           8       0.00      0.00      0.00       513
           9       0.00      0.00      0.00        66

    accuracy                           0.69     85028
   macro avg       0.65      0.31      0.33     85028
weighted avg       0.74      0.69      0.66     85028

/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
In [ ]:
plot_ROC_curve(rf2, X_train_mod6, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for RandomForestClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=RandomForestClassifier(max_depth=10, n_estimators=30))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for RandomForestClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=RandomForestClassifier(max_depth=10, n_estimators=30))
RandomForestClassifier(max_depth=10, n_estimators=30)
RandomForestClassifier(max_depth=10, n_estimators=30)
In [ ]:
xgb2 = xgb.XGBClassifier(objective="multi:softprob", random_state=42)
xgb2.fit(X_train_mod6, y_multi_train)
y_pred = xgb2.predict(X_test)
print("score on test: " + str(xgb2.score(X_test, y_multi_test)))
print("score on train: "+ str(xgb2.score(X_train_mod6, y_multi_train)))
print(metrics.classification_report(y_multi_test, y_pred))
acc=sklearn.metrics.accuracy_score(y_multi_test, y_pred)
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
res_xgb_m['6']=acc
score on test: 0.8536246883379592
score on train: 0.9073683600764642
              precision    recall  f1-score   support

           0       0.95      0.97      0.96     30772
           1       1.00      0.98      0.99     19423
           2       0.67      0.80      0.73     14709
           3       0.78      0.79      0.79      7921
           4       0.41      0.35      0.38      5357
           5       0.90      0.75      0.82      4578
           6       0.68      0.11      0.18       909
           7       0.58      0.07      0.13       780
           8       0.70      0.31      0.43       513
           9       0.50      0.03      0.06        66

    accuracy                           0.85     85028
   macro avg       0.72      0.52      0.55     85028
weighted avg       0.85      0.85      0.85     85028

In [ ]:
plot_ROC_curve(xgb2, X_train_mod6, y_multi_train, X_test, y_multi_test)
Out[ ]:
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for XGBClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=XGBClassifier(base_score=None, booster=None, callbacks=None,
                               colsample_bylevel=None, colsample_bynode=None,
                               colsample_bytree=None,
                               early_stopping_rounds=None,
                               enable_categorical=False, eval_metric=None,
                               feature_types=None, gamma=None, g...
                               grow_policy=None, importance_type=None,
                               interaction_constraints=None, learning_rate=None,
                               max_bin=None, max_cat_threshold=None,
                               max_cat_to_onehot=None, max_delta_step=None,
                               max_depth=None, max_leaves=None,
                               min_child_weight=None, missing=nan,
                               monotone_constraints=None, n_estimators=100,
                               n_jobs=None, num_parallel_tree=None,
                               objective='multi:softprob', predictor=None, ...))
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ROCAUC(ax=<Axes: title={'center': 'ROC Curves for XGBClassifier'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>,
       estimator=XGBClassifier(base_score=None, booster=None, callbacks=None,
                               colsample_bylevel=None, colsample_bynode=None,
                               colsample_bytree=None,
                               early_stopping_rounds=None,
                               enable_categorical=False, eval_metric=None,
                               feature_types=None, gamma=None, g...
                               grow_policy=None, importance_type=None,
                               interaction_constraints=None, learning_rate=None,
                               max_bin=None, max_cat_threshold=None,
                               max_cat_to_onehot=None, max_delta_step=None,
                               max_depth=None, max_leaves=None,
                               min_child_weight=None, missing=nan,
                               monotone_constraints=None, n_estimators=100,
                               n_jobs=None, num_parallel_tree=None,
                               objective='multi:softprob', predictor=None, ...))
XGBClassifier(base_score=None, booster=None, callbacks=None,
              colsample_bylevel=None, colsample_bynode=None,
              colsample_bytree=None, early_stopping_rounds=None,
              enable_categorical=False, eval_metric=None, feature_types=None,
              gamma=None, gpu_id=None, grow_policy=None, importance_type=None,
              interaction_constraints=None, learning_rate=None, max_bin=None,
              max_cat_threshold=None, max_cat_to_onehot=None,
              max_delta_step=None, max_depth=None, max_leaves=None,
              min_child_weight=None, missing=nan, monotone_constraints=None,
              n_estimators=100, n_jobs=None, num_parallel_tree=None,
              objective='multi:softprob', predictor=None, ...)
XGBClassifier(base_score=None, booster=None, callbacks=None,
              colsample_bylevel=None, colsample_bynode=None,
              colsample_bytree=None, early_stopping_rounds=None,
              enable_categorical=False, eval_metric=None, feature_types=None,
              gamma=None, gpu_id=None, grow_policy=None, importance_type=None,
              interaction_constraints=None, learning_rate=None, max_bin=None,
              max_cat_threshold=None, max_cat_to_onehot=None,
              max_delta_step=None, max_depth=None, max_leaves=None,
              min_child_weight=None, missing=nan, monotone_constraints=None,
              n_estimators=100, n_jobs=None, num_parallel_tree=None,
              objective='multi:softprob', predictor=None, ...)
In [ ]:
model2 = models.Sequential()
model2.add(layers.Dense(128, input_shape = (42,), activation = "relu"))
model2.add(layers.Dense(64, activation = "relu"))
model2.add(layers.Dense(64,activation="relu"))
model2.add(layers.Dense(10, activation = "softmax"))
model2.compile(optimizer='adam', loss="sparse_categorical_crossentropy", metrics = ["accuracy", f1_m, precision_m, recall_m])
model2.summary()

earlystopping = callbacks.EarlyStopping(monitor="loss",
                                        mode="min", patience=5,
                                        restore_best_weights=True)

model2.fit(X_train_mod6,y_multi_train,epochs=100,batch_size=128,callbacks=[earlystopping])
y_pred_arr = model2.predict(X_test)
y_pred = []
for el in y_pred_arr:
    ind = np.argmax(el)
    y_pred.append(ind)
scores=model2.evaluate(X_test, y_multi_test, verbose=0)
res_nn_m['6']=scores[1]
print("score on test: " + str(model2.evaluate(X_test,y_multi_test)[1]))
print("score on train: "+ str(model2.evaluate(X_train_mod6,y_multi_train)[1]))
cm = confusion_matrix(y_multi_test, y_pred)
plot_confusion_matrix(cm, attack_cat)
Model: "sequential_11"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense_44 (Dense)            (None, 128)               5504      
                                                                 
 dense_45 (Dense)            (None, 64)                8256      
                                                                 
 dense_46 (Dense)            (None, 64)                4160      
                                                                 
 dense_47 (Dense)            (None, 10)                650       
                                                                 
=================================================================
Total params: 18,570
Trainable params: 18,570
Non-trainable params: 0
_________________________________________________________________
Epoch 1/100
1349/1349 [==============================] - 3s 2ms/step - loss: 0.9364 - accuracy: 0.6598 - f1_m: 1.7687 - precision_m: 2.2474 - recall_m: 1.7018
Epoch 2/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.7272 - accuracy: 0.7285 - f1_m: 1.6018 - precision_m: 1.5573 - recall_m: 1.6587
Epoch 3/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.6436 - accuracy: 0.7579 - f1_m: 1.5029 - precision_m: 1.4104 - recall_m: 1.6167
Epoch 4/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5936 - accuracy: 0.7778 - f1_m: 1.4321 - precision_m: 1.3154 - recall_m: 1.5793
Epoch 5/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5630 - accuracy: 0.7885 - f1_m: 1.3858 - precision_m: 1.2581 - recall_m: 1.5493
Epoch 6/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5452 - accuracy: 0.7951 - f1_m: 1.3588 - precision_m: 1.2257 - recall_m: 1.5310
Epoch 7/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5299 - accuracy: 0.8009 - f1_m: 1.3329 - precision_m: 1.1970 - recall_m: 1.5106
Epoch 8/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5172 - accuracy: 0.8050 - f1_m: 1.3184 - precision_m: 1.1800 - recall_m: 1.5004
Epoch 9/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.5037 - accuracy: 0.8102 - f1_m: 1.3017 - precision_m: 1.1598 - recall_m: 1.4894
Epoch 10/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4928 - accuracy: 0.8141 - f1_m: 1.2942 - precision_m: 1.1517 - recall_m: 1.4837
Epoch 11/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4823 - accuracy: 0.8181 - f1_m: 1.2800 - precision_m: 1.1355 - recall_m: 1.4732
Epoch 12/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4729 - accuracy: 0.8216 - f1_m: 1.2698 - precision_m: 1.1244 - recall_m: 1.4649
Epoch 13/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4652 - accuracy: 0.8248 - f1_m: 1.2624 - precision_m: 1.1156 - recall_m: 1.4608
Epoch 14/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4590 - accuracy: 0.8265 - f1_m: 1.2574 - precision_m: 1.1105 - recall_m: 1.4553
Epoch 15/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4542 - accuracy: 0.8287 - f1_m: 1.2546 - precision_m: 1.1066 - recall_m: 1.4548
Epoch 16/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4509 - accuracy: 0.8290 - f1_m: 1.2523 - precision_m: 1.1042 - recall_m: 1.4522
Epoch 17/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4474 - accuracy: 0.8308 - f1_m: 1.2466 - precision_m: 1.0973 - recall_m: 1.4492
Epoch 18/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4442 - accuracy: 0.8311 - f1_m: 1.2453 - precision_m: 1.0967 - recall_m: 1.4463
Epoch 19/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4407 - accuracy: 0.8324 - f1_m: 1.2414 - precision_m: 1.0923 - recall_m: 1.4437
Epoch 20/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4391 - accuracy: 0.8332 - f1_m: 1.2420 - precision_m: 1.0933 - recall_m: 1.4442
Epoch 21/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4370 - accuracy: 0.8341 - f1_m: 1.2380 - precision_m: 1.0885 - recall_m: 1.4415
Epoch 22/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4338 - accuracy: 0.8348 - f1_m: 1.2392 - precision_m: 1.0893 - recall_m: 1.4429
Epoch 23/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4320 - accuracy: 0.8357 - f1_m: 1.2366 - precision_m: 1.0871 - recall_m: 1.4398
Epoch 24/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4310 - accuracy: 0.8355 - f1_m: 1.2334 - precision_m: 1.0832 - recall_m: 1.4380
Epoch 25/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4275 - accuracy: 0.8364 - f1_m: 1.2342 - precision_m: 1.0838 - recall_m: 1.4387
Epoch 26/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4263 - accuracy: 0.8371 - f1_m: 1.2341 - precision_m: 1.0839 - recall_m: 1.4385
Epoch 27/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4247 - accuracy: 0.8372 - f1_m: 1.2308 - precision_m: 1.0810 - recall_m: 1.4347
Epoch 28/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4227 - accuracy: 0.8383 - f1_m: 1.2309 - precision_m: 1.0806 - recall_m: 1.4355
Epoch 29/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4212 - accuracy: 0.8385 - f1_m: 1.2291 - precision_m: 1.0783 - recall_m: 1.4348
Epoch 30/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4207 - accuracy: 0.8387 - f1_m: 1.2243 - precision_m: 1.0733 - recall_m: 1.4306
Epoch 31/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4179 - accuracy: 0.8396 - f1_m: 1.2252 - precision_m: 1.0741 - recall_m: 1.4317
Epoch 32/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4179 - accuracy: 0.8395 - f1_m: 1.2269 - precision_m: 1.0761 - recall_m: 1.4328
Epoch 33/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4161 - accuracy: 0.8407 - f1_m: 1.2244 - precision_m: 1.0739 - recall_m: 1.4301
Epoch 34/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4147 - accuracy: 0.8404 - f1_m: 1.2227 - precision_m: 1.0715 - recall_m: 1.4293
Epoch 35/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4133 - accuracy: 0.8414 - f1_m: 1.2214 - precision_m: 1.0697 - recall_m: 1.4291
Epoch 36/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4125 - accuracy: 0.8424 - f1_m: 1.2213 - precision_m: 1.0698 - recall_m: 1.4287
Epoch 37/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4115 - accuracy: 0.8418 - f1_m: 1.2224 - precision_m: 1.0713 - recall_m: 1.4296
Epoch 38/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4094 - accuracy: 0.8425 - f1_m: 1.2206 - precision_m: 1.0686 - recall_m: 1.4289
Epoch 39/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4088 - accuracy: 0.8434 - f1_m: 1.2186 - precision_m: 1.0672 - recall_m: 1.4264
Epoch 40/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4075 - accuracy: 0.8435 - f1_m: 1.2177 - precision_m: 1.0660 - recall_m: 1.4259
Epoch 41/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4076 - accuracy: 0.8430 - f1_m: 1.2171 - precision_m: 1.0649 - recall_m: 1.4258
Epoch 42/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4057 - accuracy: 0.8437 - f1_m: 1.2151 - precision_m: 1.0632 - recall_m: 1.4232
Epoch 43/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4054 - accuracy: 0.8435 - f1_m: 1.2163 - precision_m: 1.0644 - recall_m: 1.4245
Epoch 44/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4043 - accuracy: 0.8439 - f1_m: 1.2150 - precision_m: 1.0629 - recall_m: 1.4236
Epoch 45/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4022 - accuracy: 0.8451 - f1_m: 1.2150 - precision_m: 1.0631 - recall_m: 1.4231
Epoch 46/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4026 - accuracy: 0.8448 - f1_m: 1.2153 - precision_m: 1.0639 - recall_m: 1.4235
Epoch 47/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4019 - accuracy: 0.8449 - f1_m: 1.2117 - precision_m: 1.0594 - recall_m: 1.4210
Epoch 48/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3998 - accuracy: 0.8461 - f1_m: 1.2125 - precision_m: 1.0603 - recall_m: 1.4216
Epoch 49/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.4000 - accuracy: 0.8455 - f1_m: 1.2132 - precision_m: 1.0604 - recall_m: 1.4233
Epoch 50/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3990 - accuracy: 0.8463 - f1_m: 1.2118 - precision_m: 1.0595 - recall_m: 1.4214
Epoch 51/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3977 - accuracy: 0.8467 - f1_m: 1.2122 - precision_m: 1.0599 - recall_m: 1.4213
Epoch 52/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3982 - accuracy: 0.8458 - f1_m: 1.2112 - precision_m: 1.0591 - recall_m: 1.4201
Epoch 53/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3975 - accuracy: 0.8459 - f1_m: 1.2093 - precision_m: 1.0569 - recall_m: 1.4191
Epoch 54/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3967 - accuracy: 0.8465 - f1_m: 1.2117 - precision_m: 1.0592 - recall_m: 1.4213
Epoch 55/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3952 - accuracy: 0.8476 - f1_m: 1.2091 - precision_m: 1.0563 - recall_m: 1.4193
Epoch 56/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3950 - accuracy: 0.8475 - f1_m: 1.2092 - precision_m: 1.0559 - recall_m: 1.4205
Epoch 57/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3936 - accuracy: 0.8475 - f1_m: 1.2116 - precision_m: 1.0598 - recall_m: 1.4201
Epoch 58/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3936 - accuracy: 0.8476 - f1_m: 1.2089 - precision_m: 1.0564 - recall_m: 1.4185
Epoch 59/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3922 - accuracy: 0.8481 - f1_m: 1.2089 - precision_m: 1.0558 - recall_m: 1.4195
Epoch 60/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3917 - accuracy: 0.8482 - f1_m: 1.2073 - precision_m: 1.0547 - recall_m: 1.4170
Epoch 61/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3917 - accuracy: 0.8477 - f1_m: 1.2073 - precision_m: 1.0546 - recall_m: 1.4176
Epoch 62/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3908 - accuracy: 0.8483 - f1_m: 1.2081 - precision_m: 1.0556 - recall_m: 1.4178
Epoch 63/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3901 - accuracy: 0.8487 - f1_m: 1.2079 - precision_m: 1.0552 - recall_m: 1.4180
Epoch 64/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3895 - accuracy: 0.8485 - f1_m: 1.2063 - precision_m: 1.0535 - recall_m: 1.4165
Epoch 65/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3892 - accuracy: 0.8483 - f1_m: 1.2071 - precision_m: 1.0547 - recall_m: 1.4169
Epoch 66/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3881 - accuracy: 0.8493 - f1_m: 1.2044 - precision_m: 1.0511 - recall_m: 1.4158
Epoch 67/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3873 - accuracy: 0.8496 - f1_m: 1.2047 - precision_m: 1.0521 - recall_m: 1.4150
Epoch 68/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3875 - accuracy: 0.8498 - f1_m: 1.2027 - precision_m: 1.0491 - recall_m: 1.4147
Epoch 69/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3870 - accuracy: 0.8498 - f1_m: 1.2067 - precision_m: 1.0541 - recall_m: 1.4167
Epoch 70/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3862 - accuracy: 0.8499 - f1_m: 1.2018 - precision_m: 1.0484 - recall_m: 1.4137
Epoch 71/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3861 - accuracy: 0.8497 - f1_m: 1.2026 - precision_m: 1.0497 - recall_m: 1.4135
Epoch 72/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3850 - accuracy: 0.8500 - f1_m: 1.2035 - precision_m: 1.0504 - recall_m: 1.4149
Epoch 73/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3856 - accuracy: 0.8505 - f1_m: 1.2025 - precision_m: 1.0492 - recall_m: 1.4143
Epoch 74/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3840 - accuracy: 0.8504 - f1_m: 1.2026 - precision_m: 1.0494 - recall_m: 1.4138
Epoch 75/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3839 - accuracy: 0.8506 - f1_m: 1.2032 - precision_m: 1.0503 - recall_m: 1.4137
Epoch 76/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3849 - accuracy: 0.8508 - f1_m: 1.2017 - precision_m: 1.0486 - recall_m: 1.4127
Epoch 77/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3825 - accuracy: 0.8516 - f1_m: 1.2021 - precision_m: 1.0483 - recall_m: 1.4146
Epoch 78/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3818 - accuracy: 0.8510 - f1_m: 1.2024 - precision_m: 1.0494 - recall_m: 1.4130
Epoch 79/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3819 - accuracy: 0.8516 - f1_m: 1.2018 - precision_m: 1.0483 - recall_m: 1.4136
Epoch 80/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3806 - accuracy: 0.8517 - f1_m: 1.2015 - precision_m: 1.0483 - recall_m: 1.4122
Epoch 81/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3810 - accuracy: 0.8521 - f1_m: 1.1995 - precision_m: 1.0461 - recall_m: 1.4112
Epoch 82/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3807 - accuracy: 0.8521 - f1_m: 1.1997 - precision_m: 1.0462 - recall_m: 1.4119
Epoch 83/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3793 - accuracy: 0.8524 - f1_m: 1.1978 - precision_m: 1.0436 - recall_m: 1.4106
Epoch 84/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3806 - accuracy: 0.8515 - f1_m: 1.1993 - precision_m: 1.0464 - recall_m: 1.4104
Epoch 85/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3787 - accuracy: 0.8523 - f1_m: 1.1989 - precision_m: 1.0451 - recall_m: 1.4117
Epoch 86/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3789 - accuracy: 0.8534 - f1_m: 1.1986 - precision_m: 1.0449 - recall_m: 1.4113
Epoch 87/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3790 - accuracy: 0.8522 - f1_m: 1.1970 - precision_m: 1.0434 - recall_m: 1.4093
Epoch 88/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3783 - accuracy: 0.8525 - f1_m: 1.1971 - precision_m: 1.0437 - recall_m: 1.4091
Epoch 89/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3782 - accuracy: 0.8528 - f1_m: 1.1974 - precision_m: 1.0436 - recall_m: 1.4097
Epoch 90/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3773 - accuracy: 0.8533 - f1_m: 1.1959 - precision_m: 1.0421 - recall_m: 1.4084
Epoch 91/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3757 - accuracy: 0.8532 - f1_m: 1.1967 - precision_m: 1.0433 - recall_m: 1.4087
Epoch 92/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3773 - accuracy: 0.8536 - f1_m: 1.1949 - precision_m: 1.0406 - recall_m: 1.4083
Epoch 93/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3753 - accuracy: 0.8535 - f1_m: 1.1955 - precision_m: 1.0415 - recall_m: 1.4081
Epoch 94/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3764 - accuracy: 0.8527 - f1_m: 1.1945 - precision_m: 1.0404 - recall_m: 1.4078
Epoch 95/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3754 - accuracy: 0.8536 - f1_m: 1.1960 - precision_m: 1.0426 - recall_m: 1.4083
Epoch 96/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3751 - accuracy: 0.8538 - f1_m: 1.1957 - precision_m: 1.0419 - recall_m: 1.4086
Epoch 97/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3743 - accuracy: 0.8539 - f1_m: 1.1955 - precision_m: 1.0416 - recall_m: 1.4084
Epoch 98/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3748 - accuracy: 0.8538 - f1_m: 1.1968 - precision_m: 1.0435 - recall_m: 1.4086
Epoch 99/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3735 - accuracy: 0.8544 - f1_m: 1.1962 - precision_m: 1.0426 - recall_m: 1.4088
Epoch 100/100
1349/1349 [==============================] - 2s 2ms/step - loss: 0.3739 - accuracy: 0.8547 - f1_m: 1.1936 - precision_m: 1.0393 - recall_m: 1.4075
2658/2658 [==============================] - 2s 873us/step
2658/2658 [==============================] - 3s 1ms/step - loss: 0.4152 - accuracy: 0.8446 - f1_m: 1.2172 - precision_m: 1.0753 - recall_m: 1.4248
score on test: 0.8446158766746521
5395/5395 [==============================] - 7s 1ms/step - loss: 0.3636 - accuracy: 0.8580 - f1_m: 1.2081 - precision_m: 1.0655 - recall_m: 1.4177
score on train: 0.8580316305160522
In [ ]:
fig, c_ax = plt.subplots(1,1, figsize = (12, 8))
print('ROC AUC score:', multiclass_roc_auc_score(y_multi_test, y_pred))

c_ax.legend()
c_ax.set_xlabel('False Positive Rate')
c_ax.set_ylabel('True Positive Rate')
plt.show()
ROC AUC score: 0.7555054278721189

Accuracies plots

In [ ]:
import plotly.express as px
levels = list(res_log.keys())
accuracies = list(res_log.values())
finalplot=px.scatter(x=levels,y=accuracies,title='Accuracy levels in the logistic regression')
finalplot.update_layout(xaxis_tickangle=0, xaxis_title = 'Noise range',yaxis_title='Accuracy (%)')
finalplot.update_layout(uniformtext_minsize=0)
finalplot.show()
In [ ]:
levels = list(res_rf_b.keys())
accuracies = list(res_rf_b.values())
finalplot=px.scatter(x=levels,y=accuracies,title='Accuracy levels in the random forest for binary task')
finalplot.update_layout(xaxis_tickangle=0, xaxis_title = 'Noise range',yaxis_title='Accuracy (%)')
finalplot.update_layout(uniformtext_minsize=0)
finalplot.show()
In [ ]:
levels = list(res_xgb_b.keys())
accuracies = list(res_xgb_b.values())
finalplot=px.scatter(x=levels,y=accuracies,title='Accuracy levels in the gradient boosting for binary task')
finalplot.update_layout(xaxis_tickangle=0, xaxis_title = 'Noise range',yaxis_title='Accuracy (%)')
finalplot.update_layout(uniformtext_minsize=0)
finalplot.show()
In [ ]:
levels = list(res_nn_b.keys())
accuracies = list(res_nn_b.values())
finalplot=px.scatter(x=levels,y=accuracies,title='Accuracy levels in the neural network for binary task')
finalplot.update_layout(xaxis_tickangle=0, xaxis_title = 'Noise range',yaxis_title='Accuracy (%)')
finalplot.update_layout(uniformtext_minsize=0)
finalplot.show()
In [ ]:
levels = list(res_tree.keys())
accuracies = list(res_tree.values())
finalplot=px.scatter(x=levels,y=accuracies,title='Accuracy levels in the decision tree')
finalplot.update_layout(xaxis_tickangle=0, xaxis_title = 'Noise range',yaxis_title='Accuracy (%)')
finalplot.update_layout(uniformtext_minsize=0)
finalplot.show()
In [ ]:
levels = list(res_rf_m.keys())
accuracies = list(res_rf_m.values())
finalplot=px.scatter(x=levels,y=accuracies,title='Accuracy levels in the random forest for multiclass task')
finalplot.update_layout(xaxis_tickangle=0, xaxis_title = 'Noise range',yaxis_title='Accuracy (%)')
finalplot.update_layout(uniformtext_minsize=0)
finalplot.show()
In [ ]:
levels = list(res_xgb_m.keys())
accuracies = list(res_xgb_m.values())
finalplot=px.scatter(x=levels,y=accuracies,title='Accuracy levels in the gradient boosting for multiclass task')
finalplot.update_layout(xaxis_tickangle=0, xaxis_title = 'Noise range',yaxis_title='Accuracy (%)')
finalplot.update_layout(uniformtext_minsize=0)
finalplot.show()
In [ ]:
levels = list(res_nn_m.keys())
accuracies = list(res_nn_m.values())
finalplot=px.scatter(x=levels,y=accuracies,title='Accuracy levels in the neural network for multiclass task')
finalplot.update_layout(xaxis_tickangle=0, xaxis_title = 'Noise range',yaxis_title='Accuracy (%)')
finalplot.update_layout(uniformtext_minsize=0)
finalplot.show()